From 9169f083842c98a47af7e7f01a31702963064666 Mon Sep 17 00:00:00 2001
From: Tony Volpe
Date: Mon, 29 Jan 2024 21:56:40 +0000
Subject: [PATCH] Merged in MAW-865-auto-patch (pull request #27)
Plugin updates
* Plugin updates
search-filter-divi,woocommerce,wordpress-seo,search-filter-pro
---
.../plugins/search-filter-divi/README.txt | 9 +-
.../includes/search-filter-divi-extension.php | 19 +-
.../search-filter-divi-plugin-updater.php | 3 +-
.../search-filter-divi/search-filter-divi.php | 4 +-
.../plugins/search-filter-pro/README.txt | 8 +-
.../class-search-filter-post-cache.php | 3 +
.../class-search-filter-third-party.php | 1 +
.../class-search-filter-translatepress.php | 58 +
.../class-search-filter-active-query.php | 2 +
.../includes/class-search-filter-cache.php | 2 +
.../public/includes/fields/post_meta_date.php | 4 +
.../includes/fields/post_meta_number.php | 9 +-
.../search-filter-pro/search-filter-pro.php | 9 +-
.../client/admin/506499ddac13811fee8e.svg | 1 -
.../assets/client/admin/chunks/4239.js | 2 -
.../client/admin/chunks/4239.js.LICENSE.txt | 5 -
.../assets/client/admin/chunks/4891.js | 1 -
.../assets/client/admin/chunks/4891.style.css | 1 -
.../assets/client/admin/chunks/4894.js | 2 -
.../client/admin/chunks/4894.js.LICENSE.txt | 6 -
.../assets/client/admin/chunks/5792.js | 1 -
.../assets/client/admin/chunks/5792.style.css | 1 -
.../assets/client/admin/chunks/5838.js | 1 -
.../assets/client/admin/chunks/6412.js | 7 -
.../client/admin/chunks/6412.js.LICENSE.txt | 8 -
.../assets/client/admin/chunks/71.js | 1 -
.../assets/client/admin/chunks/71.style.css | 1 -
.../assets/client/admin/chunks/7846.js | 1 -
.../assets/client/admin/chunks/8626.js | 2 -
.../client/admin/chunks/8626.js.LICENSE.txt | 34 -
.../assets/client/admin/chunks/8758.js | 1 -
.../assets/client/admin/chunks/8994.js | 1 -
.../assets/client/admin/chunks/9529.js | 1 -
.../assets/client/admin/chunks/9616.js | 1 -
.../blocks/generic/taxonomy/types.js | 1 -
.../i18n/languages/woocommerce.pot | 6 +-
.../includes/class-woocommerce.php | 2 +-
.../packages/woocommerce-blocks/LICENSE | 674 --
.../assets/css/abstracts/_breakpoints.scss | 62 -
.../assets/css/abstracts/_colors.scss | 22 -
.../assets/css/abstracts/_mixins.scss | 311 -
.../assets/css/abstracts/_variables.scss | 13 -
.../woocommerce-blocks/assets/css/editor.scss | 62 -
.../woocommerce-blocks/assets/css/style.scss | 351 --
.../assets/js/atomic/blocks/component-init.js | 127 -
.../assets/js/atomic/blocks/index.js | 22 -
.../add-to-cart-form/block.json | 18 -
.../add-to-cart-form/edit.tsx | 69 -
.../add-to-cart-form/editor.scss | 6 -
.../add-to-cart-form/index.tsx | 36 -
.../add-to-cart-form/style.scss | 25 -
.../add-to-cart/attributes.ts | 12 -
.../product-elements/add-to-cart/block.tsx | 87 -
.../add-to-cart/constants.tsx | 15 -
.../product-elements/add-to-cart/edit.tsx | 94 -
.../product-elements/add-to-cart/frontend.ts | 12 -
.../product-elements/add-to-cart/index.ts | 29 -
.../add-to-cart/product-types/external.tsx | 13 -
.../add-to-cart/product-types/grouped.tsx | 8 -
.../add-to-cart/product-types/index.ts | 4 -
.../add-to-cart/product-types/simple.tsx | 57 -
.../product-types/variable/index.tsx | 66 -
.../product-types/variable/types.ts | 17 -
.../variation-attributes/attribute-picker.tsx | 128 -
.../attribute-select-control.tsx | 98 -
.../variable/variation-attributes/index.tsx | 40 -
.../variable/variation-attributes/style.scss | 33 -
.../variation-attributes/test/index.ts | 487 --
.../variable/variation-attributes/utils.ts | 295 -
.../add-to-cart/shared/add-to-cart-button.tsx | 181 -
.../add-to-cart/shared/index.ts | 3 -
.../shared/product-unavailable.tsx | 19 -
.../add-to-cart/shared/quantity-input.tsx | 85 -
.../product-elements/add-to-cart/style.scss | 49 -
.../average-rating/block.json | 17 -
.../product-elements/average-rating/block.tsx | 37 -
.../product-elements/average-rating/edit.tsx | 43 -
.../product-elements/average-rating/index.tsx | 25 -
.../average-rating/support.ts | 26 -
.../blocks/product-elements/button/block.json | 66 -
.../blocks/product-elements/button/block.tsx | 172 -
.../blocks/product-elements/button/edit.tsx | 122 -
.../product-elements/button/frontend.tsx | 300 -
.../blocks/product-elements/button/index.tsx | 76 -
.../blocks/product-elements/button/save.tsx | 36 -
.../blocks/product-elements/button/style.scss | 145 -
.../blocks/product-elements/button/types.ts | 37 -
.../product-elements/image/attributes.ts | 55 -
.../blocks/product-elements/image/block.tsx | 185 -
.../product-elements/image/constants.tsx | 17 -
.../blocks/product-elements/image/edit.tsx | 199 -
.../blocks/product-elements/image/frontend.ts | 12 -
.../image/image-size-settings.tsx | 127 -
.../blocks/product-elements/image/index.ts | 42 -
.../blocks/product-elements/image/style.scss | 67 -
.../blocks/product-elements/image/supports.ts | 31 -
.../image/test/block.test.tsx | 289 -
.../blocks/product-elements/image/types.ts | 29 -
.../product-elements/price/attributes.ts | 29 -
.../blocks/product-elements/price/block.tsx | 131 -
.../product-elements/price/constants.tsx | 20 -
.../blocks/product-elements/price/edit.tsx | 93 -
.../blocks/product-elements/price/index.tsx | 33 -
.../blocks/product-elements/price/supports.ts | 39 -
.../blocks/product-elements/price/types.ts | 7 -
.../product-details/block.json | 18 -
.../product-details/block.tsx | 91 -
.../product-elements/product-details/edit.tsx | 31 -
.../product-details/index.tsx | 31 -
.../product-details/style.scss | 38 -
.../product-elements/product-details/types.ts | 3 -
.../product-image-gallery/block.json | 17 -
.../product-image-gallery/edit.tsx | 64 -
.../product-image-gallery/editor.scss | 14 -
.../product-image-gallery/index.ts | 24 -
.../product-image-gallery/style.scss | 24 -
.../product-elements/product-meta/block.json | 17 -
.../product-elements/product-meta/edit.tsx | 54 -
.../product-elements/product-meta/editor.scss | 4 -
.../product-elements/product-meta/index.tsx | 33 -
.../product-elements/product-meta/save.tsx | 17 -
.../product-reviews/block.json | 15 -
.../product-reviews/block.tsx | 69 -
.../product-elements/product-reviews/edit.tsx | 31 -
.../product-reviews/index.tsx | 21 -
.../product-reviews/style.scss | 53 -
.../product-elements/product-reviews/types.ts | 3 -
.../rating-counter/block.json | 38 -
.../product-elements/rating-counter/block.tsx | 88 -
.../product-elements/rating-counter/edit.tsx | 75 -
.../product-elements/rating-counter/index.tsx | 25 -
.../rating-counter/support.ts | 24 -
.../product-elements/rating-counter/types.ts | 7 -
.../product-elements/rating-stars/block.json | 38 -
.../product-elements/rating-stars/block.tsx | 158 -
.../product-elements/rating-stars/edit.tsx | 75 -
.../product-elements/rating-stars/index.tsx | 25 -
.../product-elements/rating-stars/style.scss | 107 -
.../product-elements/rating-stars/support.ts | 25 -
.../product-elements/rating-stars/types.ts | 7 -
.../blocks/product-elements/rating/block.json | 38 -
.../blocks/product-elements/rating/block.tsx | 185 -
.../product-elements/rating/constants.tsx | 20 -
.../blocks/product-elements/rating/edit.tsx | 76 -
.../product-elements/rating/editor.scss | 3 -
.../blocks/product-elements/rating/index.ts | 34 -
.../blocks/product-elements/rating/style.scss | 12 -
.../blocks/product-elements/rating/support.ts | 32 -
.../blocks/product-elements/rating/types.ts | 7 -
.../related-products/block.json | 17 -
.../related-products/edit.tsx | 49 -
.../related-products/editor.scss | 4 -
.../related-products/index.tsx | 24 -
.../related-products/save.tsx | 17 -
.../product-elements/sale-badge/attributes.ts | 21 -
.../product-elements/sale-badge/block.tsx | 65 -
.../product-elements/sale-badge/constants.tsx | 17 -
.../product-elements/sale-badge/edit.tsx | 52 -
.../product-elements/sale-badge/index.ts | 39 -
.../product-elements/sale-badge/style.scss | 37 -
.../product-elements/sale-badge/support.ts | 50 -
.../product-elements/sale-badge/types.ts | 6 -
.../js/atomic/blocks/product-elements/save.js | 20 -
.../blocks/product-elements/shared/config.tsx | 43 -
.../product-elements/shared/editor.scss | 11 -
.../shared/product-selector.tsx | 77 -
...-is-descendent-of-single-product-block.tsx | 30 -
...-descendent-of-single-product-template.tsx | 15 -
.../shared/with-product-selector.js | 93 -
.../blocks/product-elements/sku/attributes.ts | 29 -
.../blocks/product-elements/sku/block.tsx | 84 -
.../blocks/product-elements/sku/constants.tsx | 18 -
.../blocks/product-elements/sku/edit.tsx | 77 -
.../blocks/product-elements/sku/index.tsx | 41 -
.../blocks/product-elements/sku/style.scss | 6 -
.../blocks/product-elements/sku/supports.ts | 40 -
.../blocks/product-elements/sku/types.ts | 8 -
.../stock-indicator/attributes.ts | 21 -
.../stock-indicator/block.tsx | 109 -
.../stock-indicator/constants.tsx | 17 -
.../product-elements/stock-indicator/edit.tsx | 58 -
.../product-elements/stock-indicator/index.ts | 41 -
.../stock-indicator/style.scss | 6 -
.../stock-indicator/supports.ts | 40 -
.../product-elements/stock-indicator/types.ts | 5 -
.../product-elements/summary/attributes.ts | 13 -
.../blocks/product-elements/summary/block.tsx | 72 -
.../product-elements/summary/constants.tsx | 17 -
.../blocks/product-elements/summary/edit.tsx | 33 -
.../product-elements/summary/editor.scss | 5 -
.../blocks/product-elements/summary/index.ts | 33 -
.../blocks/product-elements/summary/save.tsx | 21 -
.../product-elements/summary/style.scss | 11 -
.../product-elements/summary/supports.ts | 16 -
.../blocks/product-elements/summary/types.ts | 3 -
.../product-elements/title/attributes.ts | 33 -
.../blocks/product-elements/title/block.tsx | 114 -
.../product-elements/title/constants.tsx | 17 -
.../blocks/product-elements/title/edit.tsx | 111 -
.../blocks/product-elements/title/editor.scss | 13 -
.../blocks/product-elements/title/frontend.ts | 12 -
.../blocks/product-elements/title/index.ts | 61 -
.../blocks/product-elements/title/save.tsx | 21 -
.../blocks/product-elements/title/style.scss | 39 -
.../product-elements/title/test/block.test.js | 63 -
.../blocks/product-elements/title/types.ts | 14 -
.../block-registration-strategy.ts | 55 -
.../blocks-registration-manager.ts | 182 -
.../blocks-with-restriction.ts | 42 -
.../blocks-registration-manager/index.ts | 16 -
.../template-change-detector.ts | 115 -
.../utils/create-blocks-from-template.js | 18 -
.../assets/js/atomic/utils/get-block-map.ts | 20 -
.../assets/js/atomic/utils/index.js | 5 -
.../register-block-single-product-template.ts | 121 -
.../js/atomic/utils/render-parent-block.tsx | 318 -
.../atomic/utils/render-standalone-blocks.js | 27 -
.../assets/js/base/README.MD | 11 -
.../block-error-boundary/block-error.tsx | 63 -
.../components/block-error-boundary/index.tsx | 74 -
.../block-error-boundary/style.scss | 34 -
.../components/block-error-boundary/types.ts | 62 -
.../js/base/components/button/index.tsx | 70 -
.../button/stories/index.stories.tsx | 49 -
.../js/base/components/button/style.scss | 75 -
.../address-form/address-form.tsx | 211 -
.../address-form/custom-validation-handler.ts | 41 -
.../cart-checkout/address-form/index.ts | 1 -
.../address-form/prepare-address-fields.ts | 131 -
.../cart-checkout/address-form/test/index.js | 166 -
.../cart-checkout/address-form/types.ts | 39 -
.../address-form/validate-shipping-country.ts | 43 -
.../cart-line-item-row.tsx | 377 --
.../cart-line-items-table/index.tsx | 103 -
.../cart-line-items-table/style.scss | 142 -
.../js/base/components/cart-checkout/index.js | 20 -
.../local-pickup-select/index.tsx | 56 -
.../local-pickup-select/test/index.tsx | 121 -
.../cart-checkout/order-summary/index.tsx | 53 -
.../order-summary/order-summary-item.tsx | 212 -
.../cart-checkout/order-summary/style.scss | 104 -
.../cart-checkout/order-summary/test/index.js | 43 -
.../payment-method-icons/common-icons.ts | 121 -
.../payment-method-icons/index.tsx | 64 -
.../payment-method-icon.tsx | 34 -
.../payment-method-icons/style.scss | 48 -
.../payment-method-icons/utils.ts | 40 -
.../payment-method-label/index.tsx | 78 -
.../payment-method-label/style.scss | 19 -
.../cart-checkout/pickup-location/index.tsx | 70 -
.../pickup-location/test/index.tsx | 93 -
.../place-order-button/index.tsx | 49 -
.../cart-checkout/policies/index.tsx | 57 -
.../cart-checkout/policies/style.scss | 24 -
.../product-backorder-badge/index.tsx | 22 -
.../cart-checkout/product-badge/index.tsx | 32 -
.../cart-checkout/product-badge/style.scss | 10 -
.../cart-checkout/product-details/index.tsx | 64 -
.../cart-checkout/product-details/style.scss | 25 -
.../test/__snapshots__/index.js.snap | 77 -
.../product-details/test/index.js | 57 -
.../cart-checkout/product-image/index.tsx | 38 -
.../product-low-stock-badge/index.tsx | 38 -
.../cart-checkout/product-metadata/index.tsx | 44 -
.../cart-checkout/product-metadata/style.scss | 8 -
.../product-sale-badge/index.tsx | 62 -
.../cart-checkout/product-summary/index.tsx | 41 -
.../return-to-cart-button/index.tsx | 35 -
.../return-to-cart-button/style.scss | 23 -
.../shipping-calculator/address.tsx | 84 -
.../shipping-calculator/index.tsx | 63 -
.../shipping-calculator/style.scss | 12 -
.../cart-checkout/shipping-location/index.tsx | 29 -
.../shipping-rates-control-package/index.tsx | 147 -
.../package-rates.tsx | 99 -
.../render-package-rate-option.tsx | 46 -
.../shipping-rates-control-package/style.scss | 68 -
.../shipping-rates-control-package/types.ts | 49 -
.../shipping-rates-control/index.tsx | 146 -
.../shipping-rates-control/types.ts | 56 -
.../shipping-rates-control/utils.ts | 49 -
.../cart-checkout/totals/coupon/index.tsx | 158 -
.../totals/coupon/stories/index.stories.tsx | 65 -
.../cart-checkout/totals/coupon/style.scss | 42 -
.../totals/coupon/test/index.tsx | 36 -
.../cart-checkout/totals/discount/index.tsx | 129 -
.../totals/discount/stories/index.stories.tsx | 111 -
.../cart-checkout/totals/discount/style.scss | 9 -
.../totals/footer-item/index.tsx | 123 -
.../footer-item/stories/index.stories.tsx | 87 -
.../totals/footer-item/style.scss | 14 -
.../test/__snapshots__/index.tsx.snap | 135 -
.../totals/footer-item/test/index.tsx | 110 -
.../components/cart-checkout/totals/index.ts | 4 -
.../totals/shipping/calculator-button.tsx | 35 -
.../cart-checkout/totals/shipping/index.tsx | 161 -
.../totals/shipping/shipping-address.tsx | 66 -
.../totals/shipping/shipping-placeholder.tsx | 52 -
.../shipping/shipping-rate-selector.tsx | 58 -
.../totals/shipping/shipping-via.tsx | 23 -
.../cart-checkout/totals/shipping/style.scss | 47 -
.../totals/shipping/test/index.tsx | 351 --
.../totals/shipping/test/shipping-address.tsx | 91 -
.../shipping/test/shipping-placeholder.tsx | 36 -
.../cart-checkout/totals/shipping/utils.ts | 62 -
.../js/base/components/combobox/index.tsx | 160 -
.../js/base/components/combobox/style.scss | 167 -
.../country-input/CountryInputProps.ts | 27 -
.../country-input/billing-country-input.tsx | 16 -
.../country-input/country-input.tsx | 64 -
.../js/base/components/country-input/index.ts | 7 -
.../country-input/shipping-country-input.tsx | 16 -
.../country-input/stories/countries-filler.ts | 251 -
.../country-input/stories/index.stories.tsx | 67 -
.../base/components/country-input/style.scss | 12 -
.../base/components/drawer/close-button.tsx | 7 -
.../js/base/components/drawer/index.tsx | 185 -
.../js/base/components/drawer/style.scss | 167 -
.../components/drawer/utils/aria-helper.ts | 74 -
.../components/filter-element-label/index.tsx | 53 -
.../filter-element-label/style.scss | 8 -
.../components/filter-placeholder/index.tsx | 18 -
.../components/filter-placeholder/style.scss | 18 -
.../components/filter-reset-button/index.tsx | 40 -
.../components/filter-reset-button/style.scss | 9 -
.../components/filter-submit-button/index.tsx | 49 -
.../filter-submit-button/style.scss | 15 -
.../components/form-token-field/index.tsx | 66 -
.../stories/index.stories.tsx | 41 -
.../components/form-token-field/style.scss | 94 -
.../components/form-token-field/vendor.scss | 13 -
.../assets/js/base/components/form/index.tsx | 33 -
.../assets/js/base/components/index.ts | 30 -
.../components/load-more-button/index.tsx | 36 -
.../components/load-more-button/style.scss | 4 -
.../js/base/components/loading-mask/index.tsx | 53 -
.../base/components/loading-mask/style.scss | 17 -
.../base/components/noninteractive/index.tsx | 96 -
.../components/notice-banner/docs/docs.mdx | 112 -
.../base/components/notice-banner/index.tsx | 90 -
.../notice-banner/stories/index.stories.tsx | 109 -
.../base/components/notice-banner/style.scss | 151 -
.../components/notice-banner/test/index.tsx | 99 -
.../js/base/components/notice-banner/utils.ts | 37 -
.../js/base/components/pagination/index.tsx | 226 -
.../js/base/components/pagination/style.scss | 60 -
.../base/components/pagination/test/index.js | 40 -
.../js/base/components/pagination/utils.ts | 42 -
.../constrain-range-slider-values.ts | 66 -
.../js/base/components/price-slider/index.tsx | 518 --
.../price-slider/stories/index.stories.tsx | 60 -
.../base/components/price-slider/style.scss | 390 --
.../test/constrain-range-slider-values.js | 39 -
.../js/base/components/price-slider/utils.ts | 47 -
.../components/product-list/container.tsx | 42 -
.../js/base/components/product-list/index.ts | 2 -
.../product-list/no-matching-products.tsx | 40 -
.../components/product-list/no-products.tsx | 30 -
.../product-list/product-list-item/index.tsx | 42 -
.../product-list/product-list-item/utils.tsx | 70 -
.../components/product-list/product-list.tsx | 275 -
.../product-sort-select/index.tsx | 68 -
.../product-sort-select/style.scss | 4 -
.../base/components/product-list/style.scss | 141 -
.../js/base/components/product-list/types.ts | 97 -
.../js/base/components/product-name/index.tsx | 79 -
.../product-name/stories/index.stories.tsx | 32 -
.../base/components/product-name/style.scss | 4 -
.../test/__snapshots__/index.js.snap | 48 -
.../components/product-name/test/index.js | 48 -
.../base/components/product-price/index.tsx | 338 -
.../product-price/stories/index.stories.tsx | 56 -
.../base/components/product-price/style.scss | 41 -
.../test/__snapshots__/index.js.snap | 57 -
.../components/product-price/test/index.js | 63 -
.../base/components/product-rating/index.tsx | 68 -
.../base/components/product-rating/style.scss | 121 -
.../components/quantity-selector/index.tsx | 257 -
.../stories/index.stories.tsx | 38 -
.../components/quantity-selector/style.scss | 109 -
.../js/base/components/read-more/index.tsx | 247 -
.../read-more/stories/index.stories.tsx | 70 -
.../base/components/read-more/test/index.ts | 34 -
.../js/base/components/read-more/trim-html.js | 157 -
.../js/base/components/read-more/utils.ts | 108 -
.../js/base/components/reviews/index.js | 3 -
.../reviews/review-list-item/index.tsx | 226 -
.../reviews/review-list-item/style.scss | 212 -
.../components/reviews/review-list/index.tsx | 55 -
.../components/reviews/review-list/style.scss | 4 -
.../reviews/review-sort-select/index.tsx | 59 -
.../reviews/review-sort-select/style.scss | 3 -
.../js/base/components/reviews/types.ts | 29 -
.../base/components/sidebar-layout/index.js | 3 -
.../base/components/sidebar-layout/main.tsx | 28 -
.../sidebar-layout/sidebar-layout.tsx | 32 -
.../components/sidebar-layout/sidebar.tsx | 28 -
.../base/components/sidebar-layout/style.scss | 78 -
.../base/components/sidebar-layout/types.ts | 4 -
.../js/base/components/skeleton/index.tsx | 37 -
.../js/base/components/skeleton/style.scss | 19 -
.../components/snackbar-list/constants.ts | 1 -
.../components/snackbar-list/docs/docs.mdx | 90 -
.../base/components/snackbar-list/index.tsx | 88 -
.../components/snackbar-list/snackbar.tsx | 54 -
.../snackbar-list/stories/index.stories.tsx | 84 -
.../stories/snackbar.stories.tsx | 97 -
.../base/components/snackbar-list/style.scss | 60 -
.../components/state-input/StateInputProps.ts | 16 -
.../state-input/billing-state-input.tsx | 16 -
.../js/base/components/state-input/index.ts | 3 -
.../state-input/shipping-state-input.tsx | 16 -
.../components/state-input/state-input.tsx | 128 -
.../js/base/components/state-input/style.scss | 8 -
.../js/base/components/summary/index.tsx | 49 -
.../js/base/components/summary/test/index.js | 109 -
.../js/base/components/summary/utils.ts | 60 -
.../assets/js/base/components/tabs/index.tsx | 123 -
.../components/tabs/stories/index.stories.tsx | 54 -
.../assets/js/base/components/tabs/style.scss | 60 -
.../context/event-emit/emitter-callback.ts | 15 -
.../js/base/context/event-emit/emitters.ts | 101 -
.../js/base/context/event-emit/index.ts | 5 -
.../js/base/context/event-emit/reducer.ts | 64 -
.../base/context/event-emit/test/emitters.js | 119 -
.../js/base/context/event-emit/types.ts | 18 -
.../js/base/context/event-emit/utils.ts | 94 -
.../js/base/context/hooks/cart/index.ts | 3 -
.../cart/test/use-store-cart-item-quantity.js | 216 -
.../hooks/cart/test/use-store-cart.jsx | 273 -
.../hooks/cart/use-store-cart-coupons.ts | 131 -
.../cart/use-store-cart-event-listeners.ts | 121 -
.../cart/use-store-cart-item-quantity.ts | 163 -
.../base/context/hooks/cart/use-store-cart.ts | 256 -
.../base/context/hooks/collections/index.ts | 3 -
.../hooks/collections/test/use-collection.jsx | 301 -
.../hooks/collections/use-collection-data.ts | 171 -
.../collections/use-collection-header.ts | 98 -
.../hooks/collections/use-collection.ts | 126 -
.../assets/js/base/context/hooks/index.js | 14 -
.../context/hooks/payment-methods/index.js | 2 -
.../test/use-payment-method-interface.js | 61 -
.../use-payment-method-interface.ts | 245 -
.../payment-methods/use-payment-methods.ts | 100 -
.../context/hooks/payment-methods/utils.ts | 85 -
.../js/base/context/hooks/shipping/index.js | 2 -
.../js/base/context/hooks/shipping/types.ts | 23 -
.../hooks/shipping/use-shipping-data.ts | 141 -
.../context/hooks/test/use-checkout-submit.js | 70 -
.../context/hooks/test/use-query-state.jsx | 263 -
.../context/hooks/test/use-store-products.js | 109 -
.../context/hooks/use-checkout-address.ts | 89 -
.../hooks/use-checkout-extension-data.ts | 43 -
.../base/context/hooks/use-checkout-submit.js | 65 -
.../base/context/hooks/use-customer-data.ts | 36 -
.../context/hooks/use-product-attributes.ts | 79 -
.../js/base/context/hooks/use-query-state.js | 149 -
.../hooks/use-show-shipping-total-warning.ts | 110 -
.../context/hooks/use-store-add-to-cart.ts | 95 -
.../js/base/context/hooks/use-store-events.ts | 53 -
.../base/context/hooks/use-store-products.ts | 52 -
.../js/base/context/hooks/use-validation.ts | 62 -
.../assets/js/base/context/index.ts | 3 -
.../add-to-cart-form/form-state/actions.js | 58 -
.../add-to-cart-form/form-state/constants.js | 32 -
.../add-to-cart-form/form-state/event-emit.js | 46 -
.../add-to-cart-form/form-state/index.js | 324 -
.../add-to-cart-form/form-state/reducer.js | 154 -
.../providers/add-to-cart-form/form/index.js | 31 -
.../add-to-cart-form/form/submit/index.js | 157 -
.../providers/add-to-cart-form/index.js | 2 -
.../cart-checkout/cart-events/event-emit.ts | 51 -
.../cart-checkout/cart-events/index.tsx | 78 -
.../cart-checkout/cart-events/test/index.tsx | 49 -
.../providers/cart-checkout/cart/index.js | 23 -
.../checkout-events/event-emit.ts | 61 -
.../cart-checkout/checkout-events/index.tsx | 319 -
.../cart-checkout/checkout-processor.ts | 344 --
.../cart-checkout/checkout-provider.js | 47 -
.../context/providers/cart-checkout/index.js | 7 -
.../payment-events/event-emit.ts | 49 -
.../cart-checkout/payment-events/index.tsx | 161 -
.../cart-checkout/shipping/constants.ts | 48 -
.../cart-checkout/shipping/event-emit.js | 37 -
.../cart-checkout/shipping/index.tsx | 203 -
.../cart-checkout/shipping/reducers.js | 18 -
.../providers/cart-checkout/shipping/types.ts | 42 -
.../providers/cart-checkout/shipping/utils.js | 16 -
.../context/providers/cart-checkout/utils.ts | 63 -
.../providers/container-width-context.tsx | 63 -
.../base/context/providers/editor-context.tsx | 84 -
.../assets/js/base/context/providers/index.js | 6 -
.../context/providers/query-state-context.js | 19 -
.../assets/js/base/context/test/utils.js | 53 -
.../assets/js/base/context/utils.js | 61 -
.../assets/js/base/hocs/test/with-reviews.jsx | 167 -
.../assets/js/base/hocs/with-reviews.js | 219 -
.../js/base/hocs/with-scroll-to-top/index.tsx | 87 -
.../base/hocs/with-scroll-to-top/style.scss | 4 -
.../hocs/with-scroll-to-top/test/index.js | 96 -
.../assets/js/base/hooks/index.js | 10 -
.../test/use-position-relative-to-viewport.js | 86 -
.../js/base/hooks/test/use-previous.jsx | 98 -
.../js/base/hooks/test/use-shallow-equal.jsx | 79 -
.../js/base/hooks/use-container-queries.ts | 47 -
.../assets/js/base/hooks/use-is-mounted.ts | 38 -
.../js/base/hooks/use-local-storage-state.ts | 37 -
.../use-position-relative-to-viewport.js | 84 -
.../assets/js/base/hooks/use-previous.ts | 32 -
.../assets/js/base/hooks/use-shallow-equal.ts | 24 -
.../js/base/hooks/use-spoken-message.ts | 25 -
.../assets/js/base/hooks/use-style-props.ts | 88 -
.../assets/js/base/hooks/use-throw-error.ts | 18 -
.../js/base/hooks/use-typography-props.ts | 45 -
.../assets/js/base/utils/address.ts | 158 -
.../assets/js/base/utils/camel-case-keys.ts | 12 -
.../assets/js/base/utils/create-notice.ts | 77 -
.../assets/js/base/utils/debounce.ts | 34 -
.../utils/derive-selected-shipping-rates.ts | 22 -
.../assets/js/base/utils/errors.ts | 41 -
.../utils/get-icons-from-payment-methods.ts | 24 -
.../assets/js/base/utils/get-inline-styles.ts | 142 -
.../js/base/utils/get-navigation-type.ts | 18 -
.../base/utils/get-valid-block-attributes.js | 38 -
.../assets/js/base/utils/index.js | 18 -
.../assets/js/base/utils/keyby.ts | 7 -
.../assets/js/base/utils/lazy-load-script.ts | 160 -
.../assets/js/base/utils/legacy-events.ts | 89 -
.../assets/js/base/utils/map-keys.ts | 11 -
.../assets/js/base/utils/pick.ts | 11 -
.../assets/js/base/utils/preload-script.ts | 33 -
.../assets/js/base/utils/product-data.js | 31 -
.../assets/js/base/utils/render-frontend.tsx | 260 -
.../assets/js/base/utils/shipping-rates.ts | 61 -
.../assets/js/base/utils/snake-case-keys.ts | 12 -
.../assets/js/base/utils/test/address.ts | 126 -
.../assets/js/base/utils/test/errors.js | 44 -
.../js/base/utils/test/shipping-rates.ts | 142 -
.../get-registered-block-components.ts | 55 -
.../blocks-registry/block-components/index.js | 2 -
.../register-block-component.js | 106 -
.../registered-block-components-init.ts | 11 -
.../block-components/test/index.js | 84 -
.../assets/js/blocks-registry/index.js | 2 -
.../payment-methods/assertions.ts | 66 -
.../express-payment-method-config.ts | 83 -
.../payment-methods/extensions-config.ts | 25 -
.../blocks-registry/payment-methods/index.ts | 1 -
.../payment-method-config-helper.ts | 106 -
.../payment-methods/payment-method-config.tsx | 167 -
.../payment-methods/registry.ts | 138 -
.../test/payment-method-config-helper.ts | 218 -
.../test/payment-method-config.tsx | 63 -
.../payment-methods/test/registry.ts | 97 -
.../active-attribute-filters.tsx | 150 -
.../js/blocks/active-filters/attributes.ts | 11 -
.../blocks/active-filters/block-wrapper.tsx | 31 -
.../js/blocks/active-filters/block.json | 31 -
.../assets/js/blocks/active-filters/block.tsx | 420 --
.../js/blocks/active-filters/deprecated.tsx | 45 -
.../assets/js/blocks/active-filters/edit.tsx | 105 -
.../js/blocks/active-filters/editor.scss | 9 -
.../active-filters/filter-placeholders.tsx | 30 -
.../js/blocks/active-filters/frontend.ts | 23 -
.../assets/js/blocks/active-filters/index.tsx | 51 -
.../js/blocks/active-filters/style.scss | 196 -
.../assets/js/blocks/active-filters/types.ts | 6 -
.../assets/js/blocks/active-filters/utils.tsx | 297 -
.../js/blocks/attribute-filter/attributes.ts | 11 -
.../blocks/attribute-filter/block-wrapper.tsx | 31 -
.../js/blocks/attribute-filter/block.json | 58 -
.../js/blocks/attribute-filter/block.tsx | 688 ---
.../attribute-filter/checkbox-filter.tsx | 48 -
.../js/blocks/attribute-filter/deprecated.tsx | 80 -
.../js/blocks/attribute-filter/edit.tsx | 447 --
.../js/blocks/attribute-filter/editor.scss | 53 -
.../js/blocks/attribute-filter/frontend.ts | 23 -
.../js/blocks/attribute-filter/index.tsx | 48 -
.../js/blocks/attribute-filter/preview.tsx | 41 -
.../js/blocks/attribute-filter/style.scss | 216 -
.../js/blocks/attribute-filter/test/block.tsx | 191 -
.../js/blocks/attribute-filter/types.ts | 33 -
.../js/blocks/attribute-filter/utils.ts | 148 -
.../assets/js/blocks/breadcrumbs/block.json | 36 -
.../assets/js/blocks/breadcrumbs/edit.tsx | 29 -
.../assets/js/blocks/breadcrumbs/icon.tsx | 33 -
.../assets/js/blocks/breadcrumbs/index.tsx | 51 -
.../assets/js/blocks/breadcrumbs/style.scss | 9 -
.../block-settings/index.tsx | 39 -
.../cart-checkout-shared/editor-utils.ts | 46 -
.../js/blocks/cart-checkout-shared/hacks.ts | 177 -
.../js/blocks/cart-checkout-shared/icon.js | 24 -
.../js/blocks/cart-checkout-shared/index.js | 5 -
.../express-payment-methods.js | 175 -
.../express-payment/cart-express-payment.js | 82 -
.../checkout-express-payment.js | 113 -
.../payment-methods/express-payment/index.js | 2 -
.../express-payment/style.scss | 152 -
.../payment-methods/index.js | 4 -
.../no-payment-methods/index.js | 30 -
.../no-payment-methods/style.scss | 3 -
.../payment-methods/payment-method-card.tsx | 67 -
.../payment-method-error-boundary.tsx | 52 -
.../payment-methods/payment-method-options.js | 108 -
.../payment-methods/payment-methods.js | 69 -
.../saved-payment-method-options.tsx | 186 -
.../payment-methods/style.scss | 265 -
.../payment-methods/test/payment-methods.js | 206 -
.../test/saved-payment-method-options.tsx | 138 -
.../sidebar-notices/index.tsx | 163 -
.../use-forced-layout/index.ts | 122 -
.../use-forced-layout/types.ts | 18 -
.../use-forced-layout/utils.ts | 80 -
.../view-switcher/index.tsx | 54 -
.../view-switcher/switcher.tsx | 116 -
.../view-switcher/types.ts | 5 -
.../view-switcher/utils.ts | 85 -
.../assets/js/blocks/cart/attributes.js | 56 -
.../assets/js/blocks/cart/block.js | 98 -
.../cart-cross-sells-product.tsx | 69 -
.../cart-cross-sells-product-list/index.tsx | 37 -
.../assets/js/blocks/cart/context.ts | 19 -
.../assets/js/blocks/cart/edit.js | 130 -
.../assets/js/blocks/cart/editor.scss | 37 -
.../assets/js/blocks/cart/frontend.js | 50 -
.../assets/js/blocks/cart/index.js | 131 -
.../block.json | 18 -
.../block.tsx | 19 -
.../edit.tsx | 27 -
.../frontend.tsx | 6 -
.../index.tsx | 23 -
.../cart-cross-sells-block/block.json | 18 -
.../cart-cross-sells-block/edit.tsx | 41 -
.../cart-cross-sells-block/frontend.tsx | 24 -
.../cart-cross-sells-block/index.tsx | 23 -
.../cart-cross-sells-products/block.json | 32 -
.../cart-cross-sells-products/block.tsx | 33 -
.../cart-cross-sells-products/edit.tsx | 59 -
.../cart-cross-sells-products/editor.scss | 38 -
.../cart-cross-sells-products/frontend.tsx | 6 -
.../cart-cross-sells-products/index.tsx | 24 -
.../cart-cross-sells-products/style.scss | 72 -
.../cart-express-payment-block/block.json | 28 -
.../cart-express-payment-block/block.tsx | 31 -
.../cart-express-payment-block/edit.tsx | 42 -
.../cart-express-payment-block/editor.scss | 34 -
.../cart-express-payment-block/frontend.tsx | 6 -
.../cart-express-payment-block/index.tsx | 25 -
.../inner-blocks/cart-items-block/block.json | 28 -
.../inner-blocks/cart-items-block/edit.tsx | 51 -
.../cart-items-block/frontend.tsx | 21 -
.../inner-blocks/cart-items-block/index.tsx | 23 -
.../cart-line-items-block/block.json | 28 -
.../cart-line-items-block/block.tsx | 18 -
.../cart-line-items-block/edit.tsx | 31 -
.../cart-line-items-block/frontend.tsx | 6 -
.../cart-line-items-block/index.tsx | 23 -
.../cart-order-summary-block/block.json | 28 -
.../cart-order-summary-block/edit.tsx | 74 -
.../cart-order-summary-block/frontend.tsx | 37 -
.../cart-order-summary-block/index.tsx | 24 -
.../cart-order-summary-block/slotfills.tsx | 18 -
.../cart-order-summary-coupon-form/block.json | 30 -
.../cart-order-summary-coupon-form/block.tsx | 28 -
.../cart-order-summary-coupon-form/edit.tsx | 33 -
.../frontend.tsx | 6 -
.../cart-order-summary-coupon-form/index.tsx | 23 -
.../cart-order-summary-discount/block.json | 31 -
.../cart-order-summary-discount/block.tsx | 47 -
.../cart-order-summary-discount/edit.tsx | 30 -
.../cart-order-summary-discount/frontend.tsx | 6 -
.../cart-order-summary-discount/index.tsx | 24 -
.../cart-order-summary-fee/block.json | 31 -
.../cart-order-summary-fee/block.tsx | 19 -
.../cart-order-summary-fee/edit.tsx | 30 -
.../cart-order-summary-fee/frontend.tsx | 6 -
.../cart-order-summary-fee/index.tsx | 24 -
.../cart-order-summary-heading/attributes.ts | 18 -
.../cart-order-summary-heading/block.json | 34 -
.../cart-order-summary-heading/block.tsx | 22 -
.../cart-order-summary-heading/edit.tsx | 47 -
.../cart-order-summary-heading/editor.scss | 8 -
.../cart-order-summary-heading/frontend.tsx | 12 -
.../cart-order-summary-heading/index.tsx | 24 -
.../cart-order-summary-shipping/block.json | 27 -
.../cart-order-summary-shipping/block.tsx | 34 -
.../cart-order-summary-shipping/edit.tsx | 66 -
.../cart-order-summary-shipping/frontend.tsx | 6 -
.../cart-order-summary-shipping/index.tsx | 24 -
.../cart-order-summary-subtotal/block.json | 31 -
.../cart-order-summary-subtotal/block.tsx | 19 -
.../cart-order-summary-subtotal/edit.tsx | 30 -
.../cart-order-summary-subtotal/frontend.tsx | 6 -
.../cart-order-summary-subtotal/index.tsx | 24 -
.../cart-order-summary-taxes/attributes.tsx | 18 -
.../cart-order-summary-taxes/block.json | 31 -
.../cart-order-summary-taxes/block.tsx | 43 -
.../cart-order-summary-taxes/edit.tsx | 77 -
.../cart-order-summary-taxes/frontend.tsx | 12 -
.../cart-order-summary-taxes/index.tsx | 26 -
.../inner-blocks/cart-totals-block/block.json | 35 -
.../inner-blocks/cart-totals-block/edit.tsx | 51 -
.../cart-totals-block/frontend.tsx | 28 -
.../inner-blocks/cart-totals-block/index.tsx | 24 -
.../inner-blocks/cart-totals-block/style.scss | 8 -
.../cart/inner-blocks/component-metadata.ts | 42 -
.../inner-blocks/empty-cart-block/block.json | 28 -
.../inner-blocks/empty-cart-block/edit.tsx | 105 -
.../empty-cart-block/frontend.tsx | 37 -
.../inner-blocks/empty-cart-block/index.tsx | 25 -
.../inner-blocks/empty-cart-block/style.scss | 22 -
.../inner-blocks/filled-cart-block/block.json | 28 -
.../inner-blocks/filled-cart-block/edit.tsx | 62 -
.../filled-cart-block/editor.scss | 23 -
.../filled-cart-block/frontend.tsx | 37 -
.../inner-blocks/filled-cart-block/index.tsx | 24 -
.../js/blocks/cart/inner-blocks/index.tsx | 21 -
.../proceed-to-checkout-block/attributes.tsx | 22 -
.../proceed-to-checkout-block/block.json | 27 -
.../proceed-to-checkout-block/block.tsx | 126 -
.../proceed-to-checkout-block/constants.tsx | 9 -
.../proceed-to-checkout-block/edit.tsx | 83 -
.../proceed-to-checkout-block/frontend.tsx | 12 -
.../proceed-to-checkout-block/index.tsx | 26 -
.../proceed-to-checkout-block/style.scss | 46 -
.../proceed-to-checkout-block/test/block.tsx | 89 -
.../cart/inner-blocks/register-components.ts | 224 -
.../assets/js/blocks/cart/style.scss | 219 -
.../assets/js/blocks/cart/test/block.js | 254 -
.../assets/js/blocks/cart/test/slots.js | 86 -
.../assets/js/blocks/cart/types.ts | 10 -
.../js/blocks/catalog-sorting/block.json | 26 -
.../assets/js/blocks/catalog-sorting/edit.tsx | 34 -
.../js/blocks/catalog-sorting/index.tsx | 31 -
.../js/blocks/catalog-sorting/style.scss | 19 -
.../js/blocks/checkout/address-card/index.tsx | 82 -
.../blocks/checkout/address-card/style.scss | 41 -
.../blocks/checkout/address-wrapper/index.tsx | 43 -
.../checkout/address-wrapper/style.scss | 32 -
.../assets/js/blocks/checkout/attributes.ts | 38 -
.../assets/js/blocks/checkout/block.json | 53 -
.../assets/js/blocks/checkout/block.tsx | 210 -
.../checkout-order-error/constants.js | 8 -
.../checkout/checkout-order-error/index.js | 138 -
.../checkout/checkout-order-error/style.scss | 22 -
.../assets/js/blocks/checkout/context.ts | 52 -
.../assets/js/blocks/checkout/edit.tsx | 221 -
.../js/blocks/checkout/empty-cart/index.js | 45 -
.../js/blocks/checkout/empty-cart/style.scss | 21 -
.../checkout/form-step/additional-fields.tsx | 35 -
.../blocks/checkout/form-step/attributes.ts | 32 -
.../js/blocks/checkout/form-step/editor.scss | 19 -
.../checkout/form-step/form-step-block.tsx | 99 -
.../checkout/form-step/form-step-heading.tsx | 32 -
.../js/blocks/checkout/form-step/index.tsx | 4 -
.../assets/js/blocks/checkout/frontend.tsx | 66 -
.../assets/js/blocks/checkout/index.tsx | 160 -
.../checkout-actions-block/attributes.tsx | 30 -
.../checkout-actions-block/block.json | 28 -
.../checkout-actions-block/block.tsx | 63 -
.../checkout-actions-block/constants.tsx | 9 -
.../checkout-actions-block/edit.tsx | 133 -
.../checkout-actions-block/frontend.tsx | 12 -
.../checkout-actions-block/index.tsx | 29 -
.../checkout-actions-block/style.scss | 43 -
.../attributes.tsx | 29 -
.../checkout-billing-address-block/block.json | 28 -
.../checkout-billing-address-block/block.tsx | 130 -
.../constants.tsx | 22 -
.../customer-address.tsx | 126 -
.../checkout-billing-address-block/edit.tsx | 91 -
.../frontend.tsx | 81 -
.../checkout-billing-address-block/index.tsx | 24 -
.../checkout-billing-address-block/utils.tsx | 38 -
.../attributes.tsx | 33 -
.../block.json | 28 -
.../block.tsx | 87 -
.../edit.tsx | 80 -
.../frontend.tsx | 53 -
.../index.tsx | 25 -
.../login-prompt.js | 36 -
.../checkout-express-payment-block/block.json | 32 -
.../checkout-express-payment-block/block.tsx | 25 -
.../checkout-express-payment-block/edit.tsx | 51 -
.../editor.scss | 29 -
.../checkout-express-payment-block/index.tsx | 25 -
.../checkout-fields-block/block.json | 32 -
.../checkout-fields-block/edit.tsx | 82 -
.../checkout-fields-block/frontend.tsx | 33 -
.../checkout-fields-block/index.tsx | 24 -
.../checkout-fields-block/style.scss | 42 -
.../checkout-order-note-block/block.json | 30 -
.../checkout-order-note-block/block.tsx | 59 -
.../checkout-order-note-block/edit.tsx | 26 -
.../checkout-order-note-block/editor.scss | 12 -
.../checkout-order-note-block/index.tsx | 24 -
.../checkout-order-note-block/style.scss | 29 -
.../attributes.tsx | 13 -
.../checkout-order-summary-block/block.json | 27 -
.../checkout-order-summary-block/edit.tsx | 66 -
.../checkout-order-summary-block/frontend.tsx | 37 -
.../checkout-order-summary-block/index.tsx | 26 -
.../slotfills.tsx | 19 -
.../test/block.js | 503 --
.../block.json | 31 -
.../block.tsx | 18 -
.../edit.tsx | 30 -
.../frontend.tsx | 6 -
.../index.tsx | 24 -
.../block.json | 30 -
.../block.tsx | 33 -
.../edit.tsx | 33 -
.../frontend.tsx | 6 -
.../index.tsx | 23 -
.../block.json | 31 -
.../checkout-order-summary-discount/block.tsx | 48 -
.../checkout-order-summary-discount/edit.tsx | 30 -
.../frontend.tsx | 6 -
.../checkout-order-summary-discount/index.tsx | 24 -
.../checkout-order-summary-fee/block.json | 31 -
.../checkout-order-summary-fee/block.tsx | 19 -
.../checkout-order-summary-fee/edit.tsx | 30 -
.../checkout-order-summary-fee/frontend.tsx | 6 -
.../checkout-order-summary-fee/index.tsx | 24 -
.../block.json | 27 -
.../checkout-order-summary-shipping/block.tsx | 35 -
.../checkout-order-summary-shipping/edit.tsx | 33 -
.../frontend.tsx | 6 -
.../checkout-order-summary-shipping/index.tsx | 24 -
.../block.json | 31 -
.../checkout-order-summary-subtotal/block.tsx | 19 -
.../checkout-order-summary-subtotal/edit.tsx | 30 -
.../frontend.tsx | 6 -
.../checkout-order-summary-subtotal/index.tsx | 24 -
.../attributes.tsx | 18 -
.../checkout-order-summary-taxes/block.json | 31 -
.../checkout-order-summary-taxes/block.tsx | 42 -
.../checkout-order-summary-taxes/edit.tsx | 77 -
.../checkout-order-summary-taxes/frontend.tsx | 12 -
.../checkout-order-summary-taxes/index.tsx | 26 -
.../checkout-payment-block/attributes.tsx | 27 -
.../checkout-payment-block/block.json | 28 -
.../checkout-payment-block/block.tsx | 10 -
.../checkout-payment-block/edit.tsx | 143 -
.../checkout-payment-block/frontend.tsx | 61 -
.../checkout-payment-block/index.tsx | 25 -
.../attributes.tsx | 27 -
.../checkout-pickup-options-block/block.json | 28 -
.../checkout-pickup-options-block/block.tsx | 195 -
.../checkout-pickup-options-block/edit.tsx | 67 -
.../frontend.tsx | 61 -
.../checkout-pickup-options-block/index.tsx | 26 -
.../checkout-pickup-options-block/style.scss | 68 -
.../attributes.tsx | 30 -
.../block.json | 28 -
.../checkout-shipping-address-block/block.tsx | 144 -
.../customer-address.tsx | 122 -
.../checkout-shipping-address-block/edit.tsx | 78 -
.../frontend.tsx | 70 -
.../checkout-shipping-address-block/index.tsx | 25 -
.../attributes.tsx | 47 -
.../checkout-shipping-method-block/block.json | 28 -
.../checkout-shipping-method-block/block.tsx | 212 -
.../constants.tsx | 14 -
.../checkout-shipping-method-block/edit.tsx | 324 -
.../frontend.tsx | 99 -
.../checkout-shipping-method-block/index.tsx | 26 -
.../shared/helpers.ts | 124 -
.../shared/index.js | 2 -
.../shared/rate-price.tsx | 57 -
.../checkout-shipping-method-block/style.scss | 55 -
.../attributes.tsx | 27 -
.../block.json | 28 -
.../checkout-shipping-methods-block/block.tsx | 142 -
.../checkout-shipping-methods-block/edit.tsx | 161 -
.../editor.scss | 3 -
.../frontend.tsx | 62 -
.../checkout-shipping-methods-block/index.tsx | 26 -
.../no-shipping-placeholder/index.js | 42 -
.../no-shipping-placeholder/style.scss | 21 -
.../style.scss | 11 -
.../checkout-terms-block/block.json | 31 -
.../checkout-terms-block/constants.js | 39 -
.../checkout-terms-block/edit.tsx | 169 -
.../checkout-terms-block/editor.scss | 33 -
.../checkout-terms-block/frontend.tsx | 110 -
.../checkout-terms-block/index.tsx | 24 -
.../checkout-terms-block/style.scss | 12 -
.../checkout-terms-block/test/edit.js | 137 -
.../checkout-terms-block/test/frontend.js | 78 -
.../checkout-totals-block/block.json | 33 -
.../checkout-totals-block/edit.tsx | 64 -
.../checkout-totals-block/frontend.tsx | 27 -
.../checkout-totals-block/index.tsx | 24 -
.../checkout-totals-block/style.scss | 22 -
.../inner-blocks/component-metadata.ts | 48 -
.../js/blocks/checkout/inner-blocks/index.tsx | 24 -
.../inner-blocks/register-components.ts | 237 -
.../js/blocks/checkout/order-notes/index.tsx | 67 -
.../blocks/checkout/order-notes/test/index.js | 117 -
.../js/blocks/checkout/phone-number/index.tsx | 41 -
.../js/blocks/checkout/styles/editor.scss | 75 -
.../js/blocks/checkout/styles/style.scss | 103 -
.../assets/js/blocks/checkout/types.ts | 20 -
.../assets/js/blocks/checkout/utils.ts | 15 -
.../js/blocks/classic-shortcode/block.json | 29 -
.../js/blocks/classic-shortcode/cart.tsx | 75 -
.../js/blocks/classic-shortcode/checkout.tsx | 69 -
.../js/blocks/classic-shortcode/constants.ts | 41 -
.../js/blocks/classic-shortcode/editor.scss | 96 -
.../js/blocks/classic-shortcode/index.tsx | 299 -
.../blocks/classic-shortcode/placeholder.tsx | 55 -
.../js/blocks/classic-shortcode/style.scss | 5 -
.../js/blocks/classic-shortcode/types.ts | 46 -
.../js/blocks/classic-shortcode/utils.ts | 24 -
.../classic-template/archive-product.ts | 172 -
...doc-image-single-product-classic-block.png | Bin 192925 -> 0 bytes
.../js/blocks/classic-template/constants.ts | 95 -
.../js/blocks/classic-template/editor.scss | 88 -
.../js/blocks/classic-template/index.tsx | 477 --
.../classic-template/order-confirmation.tsx | 237 -
.../product-search-results.ts | 178 -
.../blocks/classic-template/single-product.ts | 124 -
.../js/blocks/classic-template/style.scss | 5 -
.../js/blocks/classic-template/test/utils.ts | 35 -
.../js/blocks/classic-template/types.ts | 43 -
.../js/blocks/classic-template/utils.ts | 108 -
.../js/blocks/collection-filters/block.json | 33 -
.../js/blocks/collection-filters/edit.tsx | 42 -
.../js/blocks/collection-filters/index.tsx | 28 -
.../inner-blocks/price-filter/block.json | 38 -
.../price-filter/components/inspector.tsx | 77 -
.../price-filter/components/price-slider.tsx | 67 -
.../inner-blocks/price-filter/edit.tsx | 31 -
.../inner-blocks/price-filter/frontend.ts | 97 -
.../inner-blocks/price-filter/index.tsx | 24 -
.../inner-blocks/price-filter/style.scss | 216 -
.../inner-blocks/price-filter/types.ts | 39 -
.../inner-blocks/price-filter/utils.ts | 58 -
.../inner-blocks/stock-filter/block.json | 46 -
.../stock-filter/components/inspector.tsx | 96 -
.../inner-blocks/stock-filter/edit.tsx | 131 -
.../inner-blocks/stock-filter/frontend.ts | 79 -
.../inner-blocks/stock-filter/index.tsx | 27 -
.../inner-blocks/stock-filter/preview.tsx | 25 -
.../inner-blocks/stock-filter/style.scss | 181 -
.../inner-blocks/stock-filter/types.ts | 27 -
.../js/blocks/collection-filters/save.tsx | 11 -
.../blocks/collection-filters/test/utils.ts | 71 -
.../js/blocks/collection-filters/type.ts | 15 -
.../js/blocks/collection-filters/utils.ts | 89 -
.../js/blocks/customer-account/block.json | 38 -
.../js/blocks/customer-account/block.tsx | 76 -
.../js/blocks/customer-account/edit.tsx | 43 -
.../js/blocks/customer-account/editor.scss | 27 -
.../js/blocks/customer-account/index.tsx | 49 -
.../customer-account/sidebar-settings.tsx | 166 -
.../js/blocks/customer-account/style.scss | 44 -
.../js/blocks/customer-account/types.ts | 17 -
.../blocks/featured-items/block-controls.tsx | 171 -
.../blocks/featured-items/call-to-action.tsx | 67 -
.../js/blocks/featured-items/constants.ts | 9 -
.../featured-items/constrained-resizable.tsx | 42 -
.../assets/js/blocks/featured-items/edit.tsx | 21 -
.../featured-category/block.json | 108 -
.../featured-category/block.tsx | 68 -
.../featured-category/editor.scss | 6 -
.../featured-category/example.ts | 21 -
.../featured-category/index.tsx | 26 -
.../featured-category/style.scss | 9 -
.../featured-items/featured-category/utils.ts | 29 -
.../featured-product/block.json | 108 -
.../featured-items/featured-product/block.tsx | 68 -
.../featured-product/editor.scss | 10 -
.../featured-product/example.ts | 21 -
.../featured-items/featured-product/index.tsx | 25 -
.../featured-product/style.scss | 32 -
.../js/blocks/featured-items/image-editor.tsx | 197 -
.../featured-items/inspector-controls.tsx | 358 --
.../js/blocks/featured-items/register.tsx | 128 -
.../js/blocks/featured-items/style.scss | 183 -
.../assets/js/blocks/featured-items/types.ts | 33 -
.../featured-items/use-background-image.ts | 67 -
.../assets/js/blocks/featured-items/utils.ts | 93 -
.../blocks/featured-items/with-api-error.tsx | 59 -
.../blocks/featured-items/with-edit-mode.tsx | 129 -
.../featured-items/with-editing-image.tsx | 35 -
.../featured-items/with-featured-item.tsx | 337 -
.../with-update-button-attributes.tsx | 91 -
.../js/blocks/filter-wrapper/block.json | 18 -
.../assets/js/blocks/filter-wrapper/block.tsx | 27 -
.../js/blocks/filter-wrapper/context.ts | 30 -
.../assets/js/blocks/filter-wrapper/edit.tsx | 39 -
.../js/blocks/filter-wrapper/frontend.ts | 17 -
.../assets/js/blocks/filter-wrapper/index.tsx | 274 -
.../filter-wrapper/register-components.ts | 65 -
.../assets/js/blocks/filter-wrapper/types.ts | 4 -
.../js/blocks/filter-wrapper/upgrade.tsx | 98 -
.../js/blocks/handpicked-products/block.json | 80 -
.../js/blocks/handpicked-products/block.tsx | 20 -
.../blocks/handpicked-products/edit-mode.tsx | 66 -
.../js/blocks/handpicked-products/edit.tsx | 63 -
.../js/blocks/handpicked-products/editor.scss | 3 -
.../js/blocks/handpicked-products/index.tsx | 37 -
.../inspector-controls.tsx | 95 -
.../js/blocks/handpicked-products/types.ts | 47 -
.../constants.ts | 19 -
.../index.ts | 5 -
...ion-from-product-collection-to-products.ts | 225 -
...ion-from-products-to-product-collection.ts | 253 -
.../migration-utils.ts | 104 -
.../types.ts | 23 -
.../assets/js/blocks/mini-cart/block.json | 65 -
.../assets/js/blocks/mini-cart/block.tsx | 310 -
.../blocks/mini-cart/component-frontend.tsx | 83 -
.../assets/js/blocks/mini-cart/edit.tsx | 268 -
.../assets/js/blocks/mini-cart/editor.scss | 17 -
.../assets/js/blocks/mini-cart/frontend.ts | 183 -
.../assets/js/blocks/mini-cart/index.tsx | 74 -
.../mini-cart-contents/attributes.tsx | 46 -
.../mini-cart/mini-cart-contents/block.tsx | 30 -
.../mini-cart/mini-cart-contents/edit.tsx | 184 -
.../mini-cart/mini-cart-contents/editor.scss | 99 -
.../mini-cart/mini-cart-contents/index.tsx | 62 -
.../mini-cart-contents/inner-blocks-style.tsx | 55 -
.../inner-blocks/allowed-blocks.ts | 44 -
.../empty-mini-cart-contents-block/block.json | 28 -
.../empty-mini-cart-contents-block/edit.tsx | 37 -
.../frontend.tsx | 43 -
.../empty-mini-cart-contents-block/index.tsx | 27 -
.../block.json | 28 -
.../filled-mini-cart-contents-block/edit.tsx | 62 -
.../frontend.tsx | 30 -
.../filled-mini-cart-contents-block/index.tsx | 27 -
.../mini-cart-contents/inner-blocks/index.tsx | 14 -
.../attributes.tsx | 11 -
.../mini-cart-cart-button-block/block.json | 42 -
.../mini-cart-cart-button-block/block.tsx | 48 -
.../mini-cart-cart-button-block/constants.tsx | 9 -
.../mini-cart-cart-button-block/edit.tsx | 46 -
.../mini-cart-cart-button-block/index.tsx | 28 -
.../attributes.tsx | 11 -
.../block.json | 44 -
.../mini-cart-checkout-button-block/block.tsx | 60 -
.../constants.tsx | 9 -
.../mini-cart-checkout-button-block/edit.tsx | 47 -
.../mini-cart-checkout-button-block/index.tsx | 28 -
.../test/block.tsx | 48 -
.../mini-cart-footer-block/attributes.tsx | 18 -
.../mini-cart-footer-block/block.json | 28 -
.../mini-cart-footer-block/block.tsx | 90 -
.../mini-cart-footer-block/constants.ts | 14 -
.../mini-cart-footer-block/edit.tsx | 74 -
.../mini-cart-footer-block/editor.scss | 3 -
.../mini-cart-footer-block/index.tsx | 66 -
.../mini-cart-items-block/block.json | 28 -
.../mini-cart-items-block/edit.tsx | 39 -
.../mini-cart-items-block/frontend.tsx | 25 -
.../mini-cart-items-block/index.tsx | 26 -
.../mini-cart-products-table-block/block.json | 28 -
.../mini-cart-products-table-block/block.tsx | 32 -
.../mini-cart-products-table-block/edit.tsx | 26 -
.../mini-cart-products-table-block/index.tsx | 21 -
.../attributes.tsx | 11 -
.../block.json | 42 -
.../mini-cart-shopping-button-block/block.tsx | 44 -
.../constants.tsx | 9 -
.../mini-cart-shopping-button-block/edit.tsx | 46 -
.../mini-cart-shopping-button-block/index.tsx | 28 -
.../mini-cart-title-block/block.json | 35 -
.../mini-cart-title-block/block.tsx | 47 -
.../mini-cart-title-block/edit.tsx | 36 -
.../mini-cart-title-block/index.tsx | 26 -
.../block.json | 29 -
.../block.tsx | 36 -
.../edit.tsx | 30 -
.../index.tsx | 26 -
.../attributes.tsx | 11 -
.../mini-cart-title-label-block/block.json | 34 -
.../mini-cart-title-label-block/block.tsx | 30 -
.../mini-cart-title-label-block/constants.ts | 9 -
.../mini-cart-title-label-block/edit.tsx | 34 -
.../mini-cart-title-label-block/index.tsx | 28 -
.../inner-blocks/register-components.ts | 137 -
.../mini-cart-contents/inner-blocks/utils.ts | 33 -
.../blocks/mini-cart/quantity-badge/index.tsx | 57 -
.../mini-cart/quantity-badge/style.scss | 45 -
.../assets/js/blocks/mini-cart/style.scss | 209 -
.../assets/js/blocks/mini-cart/test/block.js | 224 -
.../assets/js/blocks/mini-cart/types.ts | 27 -
.../assets/js/blocks/mini-cart/utils/data.ts | 197 -
.../js/blocks/mini-cart/utils/defaults.ts | 5 -
.../js/blocks/mini-cart/utils/set-styles.ts | 51 -
.../js/blocks/mini-cart/utils/test/data.ts | 240 -
.../additional-information/block.json | 44 -
.../additional-information/edit.tsx | 25 -
.../additional-information/index.tsx | 29 -
.../additional-information/style.scss | 6 -
.../billing-address/block.json | 62 -
.../billing-address/edit.tsx | 29 -
.../billing-address/index.tsx | 33 -
.../billing-address/style.scss | 33 -
.../billing-wrapper/attributes.tsx | 11 -
.../billing-wrapper/block.json | 29 -
.../billing-wrapper/edit.tsx | 46 -
.../billing-wrapper/index.tsx | 32 -
.../downloads-wrapper/attributes.tsx | 11 -
.../downloads-wrapper/block.json | 29 -
.../downloads-wrapper/edit.tsx | 61 -
.../downloads-wrapper/editor.scss | 3 -
.../downloads-wrapper/index.tsx | 32 -
.../order-confirmation/downloads/block.json | 68 -
.../order-confirmation/downloads/edit.tsx | 132 -
.../order-confirmation/downloads/index.tsx | 30 -
.../order-confirmation/downloads/style.scss | 57 -
.../shipping-address/block.json | 62 -
.../shipping-address/edit.tsx | 29 -
.../shipping-address/index.tsx | 33 -
.../shipping-address/style.scss | 33 -
.../shipping-wrapper/attributes.tsx | 11 -
.../shipping-wrapper/block.json | 30 -
.../shipping-wrapper/edit.tsx | 46 -
.../shipping-wrapper/index.tsx | 32 -
.../order-confirmation/status/block.json | 56 -
.../blocks/order-confirmation/status/edit.tsx | 29 -
.../order-confirmation/status/index.tsx | 29 -
.../order-confirmation/status/style.scss | 22 -
.../order-confirmation/summary/block.json | 65 -
.../order-confirmation/summary/edit.tsx | 84 -
.../order-confirmation/summary/index.tsx | 29 -
.../order-confirmation/summary/style.scss | 42 -
.../totals-wrapper/attributes.tsx | 11 -
.../totals-wrapper/block.json | 29 -
.../totals-wrapper/edit.tsx | 46 -
.../totals-wrapper/index.tsx | 33 -
.../order-confirmation/totals/block.json | 68 -
.../blocks/order-confirmation/totals/edit.tsx | 125 -
.../order-confirmation/totals/index.tsx | 31 -
.../order-confirmation/totals/style.scss | 72 -
.../js/blocks/page-content-wrapper/block.json | 26 -
.../blocks/page-content-wrapper/editor.scss | 3 -
.../js/blocks/page-content-wrapper/index.tsx | 88 -
.../js/blocks/price-filter/attributes.ts | 11 -
.../js/blocks/price-filter/block-wrapper.tsx | 31 -
.../assets/js/blocks/price-filter/block.json | 43 -
.../assets/js/blocks/price-filter/block.tsx | 365 --
.../js/blocks/price-filter/constants.ts | 2 -
.../js/blocks/price-filter/deprecated.tsx | 51 -
.../assets/js/blocks/price-filter/edit.tsx | 186 -
.../assets/js/blocks/price-filter/editor.scss | 62 -
.../assets/js/blocks/price-filter/frontend.ts | 23 -
.../assets/js/blocks/price-filter/index.tsx | 47 -
.../assets/js/blocks/price-filter/style.scss | 49 -
.../test/use-price-constraints.jsx | 89 -
.../assets/js/blocks/price-filter/types.ts | 8 -
.../price-filter/use-price-constraints.ts | 73 -
.../assets/js/blocks/price-filter/utils.ts | 22 -
.../js/blocks/product-best-sellers/block.json | 92 -
.../js/blocks/product-best-sellers/block.tsx | 29 -
.../js/blocks/product-best-sellers/edit.tsx | 20 -
.../js/blocks/product-best-sellers/index.tsx | 56 -
.../inspector-controls.tsx | 79 -
.../js/blocks/product-best-sellers/types.ts | 40 -
.../js/blocks/product-categories/block.json | 57 -
.../js/blocks/product-categories/block.tsx | 207 -
.../js/blocks/product-categories/edit.tsx | 21 -
.../js/blocks/product-categories/editor.scss | 9 -
.../js/blocks/product-categories/index.tsx | 134 -
.../js/blocks/product-categories/style.scss | 91 -
.../js/blocks/product-categories/types.ts | 35 -
.../js/blocks/product-category/block.json | 92 -
.../js/blocks/product-category/block.tsx | 50 -
.../js/blocks/product-category/edit-mode.tsx | 104 -
.../js/blocks/product-category/edit.tsx | 73 -
.../js/blocks/product-category/editor.scss | 7 -
.../js/blocks/product-category/index.tsx | 55 -
.../product-category/inspector-controls.tsx | 116 -
.../js/blocks/product-category/types.ts | 42 -
.../js/blocks/product-collection/block.json | 40 -
.../js/blocks/product-collection/constants.ts | 93 -
.../js/blocks/product-collection/edit.tsx | 134 -
.../js/blocks/product-collection/editor.scss | 26 -
.../js/blocks/product-collection/icon.tsx | 30 -
.../js/blocks/product-collection/index.tsx | 22 -
.../inner-blocks/no-results/block.json | 35 -
.../inner-blocks/no-results/edit.tsx | 65 -
.../inner-blocks/no-results/index.tsx | 21 -
.../inner-blocks/no-results/save.tsx | 9 -
.../inspector-controls/attributes-control.tsx | 69 -
.../inspector-controls/columns-control.tsx | 99 -
.../inspector-controls/created-control.tsx | 114 -
.../featured-products-control.tsx | 52 -
.../hand-picked-products-control.tsx | 143 -
.../inspector-controls/index.tsx | 207 -
.../inherit-query-control.tsx | 98 -
.../inspector-controls/keyword-control.tsx | 52 -
.../layout-options-control.tsx | 85 -
.../inspector-controls/on-sale-control.tsx | 47 -
.../inspector-controls/order-by-control.tsx | 82 -
.../stock-status-control.tsx | 82 -
.../taxonomy-controls/index.tsx | 85 -
.../taxonomy-controls/taxonomy-item.tsx | 269 -
.../inspector-controls/upgrade-notice.tsx | 87 -
.../js/blocks/product-collection/save.tsx | 10 -
.../display-layout-toolbar.tsx | 42 -
.../display-settings-toolbar.tsx | 136 -
.../toolbar-controls/index.tsx | 62 -
.../pattern-chooser-toolbar.tsx | 19 -
.../pattern-selection-modal.tsx | 78 -
.../js/blocks/product-collection/types.ts | 91 -
.../js/blocks/product-collection/utils.tsx | 53 -
.../variations/elements/product-summary.tsx | 28 -
.../variations/elements/product-title.tsx | 28 -
.../variations/elements/utils.tsx | 31 -
.../product-collection/variations/index.ts | 41 -
.../product-gallery/block-settings/index.tsx | 109 -
.../js/blocks/product-gallery/block.json | 68 -
.../assets/js/blocks/product-gallery/edit.tsx | 168 -
.../js/blocks/product-gallery/editor.scss | 5 -
.../js/blocks/product-gallery/frontend.tsx | 233 -
.../assets/js/blocks/product-gallery/icon.tsx | 36 -
.../js/blocks/product-gallery/index.tsx | 20 -
.../block.json | 25 -
.../edit.tsx | 82 -
.../editor.scss | 12 -
.../icons.tsx | 206 -
.../index.tsx | 22 -
.../save.tsx | 8 -
.../settings.tsx | 90 -
.../types.ts | 9 -
.../utils.ts | 33 -
.../product-gallery-large-image/block.json | 16 -
.../product-gallery-large-image/edit.tsx | 83 -
.../product-gallery-large-image/editor.scss | 11 -
.../product-gallery-large-image/frontend.tsx | 173 -
.../product-gallery-large-image/icon.tsx | 18 -
.../product-gallery-large-image/index.tsx | 22 -
.../product-gallery-large-image/save.tsx | 12 -
.../product-gallery-pager/block.json | 13 -
.../product-gallery-pager/constants.ts | 5 -
.../product-gallery-pager/edit.tsx | 109 -
.../product-gallery-pager/editor.scss | 19 -
.../product-gallery-pager/icons.tsx | 74 -
.../product-gallery-pager/index.tsx | 24 -
.../product-gallery-pager/settings.tsx | 87 -
.../product-gallery-pager/types.tsx | 8 -
.../block-settings/index.tsx | 122 -
.../product-gallery-thumbnails/block.json | 21 -
.../product-gallery-thumbnails/constants.tsx | 6 -
.../product-gallery-thumbnails/edit.tsx | 72 -
.../product-gallery-thumbnails/editor.scss | 17 -
.../product-gallery-thumbnails/icon.tsx | 18 -
.../product-gallery-thumbnails/index.tsx | 23 -
.../assets/js/blocks/product-gallery/save.tsx | 28 -
.../js/blocks/product-gallery/settings.ts | 12 -
.../js/blocks/product-gallery/style.scss | 281 -
.../assets/js/blocks/product-gallery/types.ts | 70 -
.../js/blocks/product-gallery/utils.tsx | 237 -
.../assets/js/blocks/product-new/block.json | 92 -
.../assets/js/blocks/product-new/block.tsx | 112 -
.../assets/js/blocks/product-new/edit.tsx | 22 -
.../assets/js/blocks/product-new/index.tsx | 53 -
.../assets/js/blocks/product-new/types.ts | 40 -
.../js/blocks/product-on-sale/block.tsx | 64 -
.../js/blocks/product-on-sale/editor.scss | 6 -
.../assets/js/blocks/product-on-sale/index.js | 72 -
.../product-on-sale/inspector-controls.tsx | 109 -
.../assets/js/blocks/product-on-sale/types.ts | 25 -
.../js/blocks/product-query/constants.ts | 145 -
.../js/blocks/product-query/editor.scss | 4 -
.../assets/js/blocks/product-query/index.tsx | 50 -
.../product-query/inspector-controls.tsx | 290 -
.../inspector-controls/attributes-filter.tsx | 69 -
.../inspector-controls/popular-presets.tsx | 70 -
.../inspector-controls/product-selector.tsx | 108 -
.../inspector-controls/upgrade-notice.tsx | 45 -
.../assets/js/blocks/product-query/style.scss | 32 -
.../assets/js/blocks/product-query/types.ts | 106 -
.../assets/js/blocks/product-query/utils.tsx | 101 -
.../variations/elements/product-summary.tsx | 25 -
.../variations/elements/product-template.tsx | 25 -
.../variations/elements/product-title.tsx | 25 -
.../variations/elements/utils.tsx | 41 -
.../blocks/product-query/variations/index.ts | 1 -
.../variations/product-query.tsx | 120 -
.../variations/related-products.tsx | 153 -
.../blocks/product-results-count/block.json | 21 -
.../js/blocks/product-results-count/edit.tsx | 28 -
.../js/blocks/product-results-count/index.tsx | 31 -
.../blocks/product-results-count/style.scss | 12 -
.../assets/js/blocks/product-search/block.tsx | 95 -
.../assets/js/blocks/product-search/edit.tsx | 152 -
.../js/blocks/product-search/editor.scss | 22 -
.../assets/js/blocks/product-search/index.tsx | 201 -
.../js/blocks/product-search/style.scss | 38 -
.../assets/js/blocks/product-tag/block.json | 79 -
.../assets/js/blocks/product-tag/block.tsx | 308 -
.../assets/js/blocks/product-tag/edit.tsx | 21 -
.../assets/js/blocks/product-tag/editor.scss | 7 -
.../assets/js/blocks/product-tag/index.tsx | 52 -
.../assets/js/blocks/product-tag/types.ts | 27 -
.../js/blocks/product-template/block.json | 48 -
.../js/blocks/product-template/edit.tsx | 270 -
.../js/blocks/product-template/editor.scss | 5 -
.../js/blocks/product-template/icon.tsx | 18 -
.../js/blocks/product-template/index.tsx | 19 -
.../js/blocks/product-template/save.tsx | 8 -
.../js/blocks/product-template/style.scss | 73 -
.../js/blocks/product-top-rated/block.json | 92 -
.../js/blocks/product-top-rated/block.tsx | 116 -
.../js/blocks/product-top-rated/edit.tsx | 20 -
.../js/blocks/product-top-rated/index.tsx | 60 -
.../js/blocks/product-top-rated/types.ts | 40 -
.../blocks/products-by-attribute/block.json | 89 -
.../js/blocks/products-by-attribute/block.tsx | 20 -
.../products-by-attribute/edit-mode.tsx | 76 -
.../js/blocks/products-by-attribute/edit.tsx | 64 -
.../blocks/products-by-attribute/editor.scss | 3 -
.../js/blocks/products-by-attribute/index.tsx | 45 -
.../inspector-controls.tsx | 110 -
.../js/blocks/products-by-attribute/types.ts | 47 -
.../blocks/products/all-products/block.json | 39 -
.../js/blocks/products/all-products/block.tsx | 50 -
.../blocks/products/all-products/defaults.js | 21 -
.../products/all-products/deprecated.js | 36 -
.../js/blocks/products/all-products/edit.js | 323 -
.../blocks/products/all-products/editor.scss | 116 -
.../blocks/products/all-products/frontend.js | 28 -
.../js/blocks/products/all-products/index.js | 36 -
.../js/blocks/products/all-products/save.js | 32 -
.../assets/js/blocks/products/base-utils.js | 62 -
.../assets/js/blocks/products/edit-utils.js | 52 -
.../assets/js/blocks/products/edit.js | 74 -
.../assets/js/blocks/products/utils.js | 16 -
.../js/blocks/rating-filter/block-wrapper.tsx | 31 -
.../assets/js/blocks/rating-filter/block.json | 44 -
.../assets/js/blocks/rating-filter/block.tsx | 506 --
.../js/blocks/rating-filter/deprecated.tsx | 44 -
.../assets/js/blocks/rating-filter/edit.tsx | 170 -
.../js/blocks/rating-filter/editor.scss | 3 -
.../js/blocks/rating-filter/frontend.ts | 23 -
.../assets/js/blocks/rating-filter/index.tsx | 43 -
.../js/blocks/rating-filter/preview.tsx | 28 -
.../assets/js/blocks/rating-filter/style.scss | 170 -
.../js/blocks/rating-filter/test/block.tsx | 500 --
.../assets/js/blocks/rating-filter/types.ts | 13 -
.../assets/js/blocks/rating-filter/utils.ts | 50 -
.../js/blocks/reviews/all-reviews/block.tsx | 84 -
.../js/blocks/reviews/all-reviews/edit.tsx | 20 -
.../js/blocks/reviews/all-reviews/index.tsx | 89 -
.../all-reviews/no-reviews-placeholder.tsx | 28 -
.../js/blocks/reviews/all-reviews/types.ts | 13 -
.../assets/js/blocks/reviews/attributes.ts | 124 -
.../assets/js/blocks/reviews/edit-utils.js | 229 -
.../assets/js/blocks/reviews/editor-block.js | 80 -
.../blocks/reviews/editor-container-block.js | 81 -
.../assets/js/blocks/reviews/editor.scss | 3 -
.../assets/js/blocks/reviews/example.js | 22 -
.../js/blocks/reviews/frontend-block.tsx | 68 -
.../reviews/frontend-container-block.tsx | 125 -
.../assets/js/blocks/reviews/frontend.ts | 35 -
.../reviews/reviews-by-category/block.tsx | 169 -
.../reviews/reviews-by-category/edit.tsx | 22 -
.../reviews/reviews-by-category/index.tsx | 82 -
.../no-reviews-placeholder.tsx | 30 -
.../reviews/reviews-by-category/types.ts | 13 -
.../reviews/reviews-by-product/edit.tsx | 184 -
.../reviews/reviews-by-product/editor.scss | 9 -
.../reviews/reviews-by-product/index.js | 75 -
.../no-reviews-placeholder.js | 66 -
.../reviews/reviews-by-product/types.ts | 15 -
.../assets/js/blocks/reviews/save.js | 21 -
.../reviews/test/frontend-block.test.tsx | 138 -
.../assets/js/blocks/reviews/utils.js | 114 -
.../assets/js/blocks/shared/styles/style.scss | 16 -
.../js/blocks/single-product/block.json | 30 -
.../js/blocks/single-product/constants.tsx | 82 -
.../edit/editor-block-controls.tsx | 36 -
.../js/blocks/single-product/edit/editor.scss | 14 -
.../js/blocks/single-product/edit/index.tsx | 157 -
.../single-product/edit/layout-editor.tsx | 99 -
.../edit/shared-product-control.tsx | 32 -
.../assets/js/blocks/single-product/index.tsx | 19 -
.../assets/js/blocks/single-product/save.tsx | 17 -
.../assets/js/blocks/single-product/types.ts | 4 -
.../js/blocks/stock-filter/attributes.ts | 11 -
.../js/blocks/stock-filter/block-wrapper.tsx | 31 -
.../assets/js/blocks/stock-filter/block.json | 48 -
.../assets/js/blocks/stock-filter/block.tsx | 545 --
.../js/blocks/stock-filter/deprecated.tsx | 57 -
.../assets/js/blocks/stock-filter/edit.tsx | 175 -
.../assets/js/blocks/stock-filter/editor.scss | 36 -
.../assets/js/blocks/stock-filter/frontend.ts | 23 -
.../assets/js/blocks/stock-filter/index.tsx | 45 -
.../assets/js/blocks/stock-filter/preview.tsx | 25 -
.../assets/js/blocks/stock-filter/style.scss | 176 -
.../test/__snapshots__/block.tsx.snap | 389 --
.../js/blocks/stock-filter/test/block.tsx | 555 --
.../assets/js/blocks/stock-filter/types.ts | 22 -
.../assets/js/blocks/stock-filter/utils.ts | 60 -
.../assets/js/blocks/store-notices/block.json | 21 -
.../assets/js/blocks/store-notices/edit.tsx | 30 -
.../js/blocks/store-notices/editor.scss | 6 -
.../assets/js/blocks/store-notices/index.tsx | 30 -
.../assets/js/data/cart/action-types.ts | 17 -
.../assets/js/data/cart/actions.ts | 504 --
.../assets/js/data/cart/constants.ts | 16 -
.../assets/js/data/cart/default-state.ts | 105 -
.../assets/js/data/cart/index.ts | 92 -
.../assets/js/data/cart/notify-errors.ts | 33 -
.../js/data/cart/notify-quantity-changes.ts | 232 -
.../assets/js/data/cart/push-changes.ts | 181 -
.../assets/js/data/cart/reducers.ts | 189 -
.../assets/js/data/cart/resolvers.ts | 44 -
.../assets/js/data/cart/selectors.ts | 224 -
.../data/cart/test/notify-quantity-changes.ts | 196 -
.../assets/js/data/cart/test/push-changes.ts | 187 -
.../assets/js/data/cart/test/reducers.js | 94 -
.../assets/js/data/cart/test/resolvers.ts | 54 -
.../assets/js/data/cart/test/selectors.js | 204 -
.../assets/js/data/cart/thunks.ts | 61 -
.../js/data/cart/update-payment-methods.ts | 35 -
.../assets/js/data/cart/utils.ts | 118 -
.../assets/js/data/checkout/action-types.ts | 18 -
.../assets/js/data/checkout/actions.ts | 168 -
.../assets/js/data/checkout/constants.ts | 38 -
.../assets/js/data/checkout/default-state.ts | 51 -
.../assets/js/data/checkout/index.ts | 35 -
.../assets/js/data/checkout/reducers.ts | 172 -
.../assets/js/data/checkout/selectors.ts | 97 -
.../assets/js/data/checkout/test/reducer.ts | 288 -
.../assets/js/data/checkout/thunks.ts | 137 -
.../assets/js/data/checkout/types.ts | 67 -
.../assets/js/data/checkout/utils.ts | 222 -
.../js/data/collections/action-types.js | 7 -
.../assets/js/data/collections/actions.js | 85 -
.../assets/js/data/collections/constants.js | 2 -
.../assets/js/data/collections/index.js | 27 -
.../assets/js/data/collections/reducers.js | 72 -
.../assets/js/data/collections/resolvers.js | 110 -
.../assets/js/data/collections/selectors.js | 144 -
.../js/data/collections/test/reducers.js | 99 -
.../js/data/collections/test/resolvers.js | 166 -
.../js/data/collections/test/selectors.js | 117 -
.../assets/js/data/constants.ts | 18 -
.../assets/js/data/index.ts | 18 -
.../assets/js/data/mapped-types.ts | 107 -
.../assets/js/data/payment/action-types.ts | 18 -
.../assets/js/data/payment/actions.ts | 189 -
.../assets/js/data/payment/constants.ts | 9 -
.../assets/js/data/payment/default-state.ts | 48 -
.../assets/js/data/payment/index.ts | 40 -
.../assets/js/data/payment/reducers.ts | 152 -
.../assets/js/data/payment/selectors.ts | 231 -
.../assets/js/data/payment/test/actions.ts | 45 -
.../payment/test/check-payment-methods.tsx | 166 -
.../assets/js/data/payment/test/reducers.js | 211 -
.../assets/js/data/payment/test/selectors.js | 331 -
.../test/set-default-payment-method.ts | 149 -
.../assets/js/data/payment/test/thunks.tsx | 224 -
.../assets/js/data/payment/thunks.ts | 215 -
.../assets/js/data/payment/types.ts | 96 -
.../payment/utils/check-payment-methods.ts | 247 -
.../filter-active-saved-payment-methods.ts | 49 -
.../utils/set-default-payment-method.ts | 68 -
.../js/data/query-state/action-types.js | 4 -
.../assets/js/data/query-state/actions.js | 38 -
.../assets/js/data/query-state/constants.js | 1 -
.../assets/js/data/query-state/index.js | 22 -
.../assets/js/data/query-state/reducers.js | 46 -
.../assets/js/data/query-state/selectors.js | 51 -
.../js/data/query-state/test/reducers.js | 136 -
.../js/data/query-state/test/selectors.js | 63 -
.../assets/js/data/query-state/utils.js | 3 -
.../assets/js/data/schema/action-types.js | 3 -
.../assets/js/data/schema/actions.js | 22 -
.../assets/js/data/schema/constants.js | 6 -
.../assets/js/data/schema/index.js | 26 -
.../assets/js/data/schema/reducers.js | 57 -
.../assets/js/data/schema/resolvers.js | 39 -
.../assets/js/data/schema/selectors.js | 161 -
.../assets/js/data/schema/test/reducers.js | 73 -
.../assets/js/data/schema/test/resolvers.js | 57 -
.../assets/js/data/schema/test/selectors.js | 107 -
.../assets/js/data/schema/test/utils.js | 56 -
.../assets/js/data/schema/utils.js | 65 -
.../assets/js/data/shared-controls.ts | 207 -
.../js/data/store-notices/action-types.ts | 4 -
.../assets/js/data/store-notices/actions.ts | 18 -
.../js/data/store-notices/default-state.ts | 7 -
.../assets/js/data/store-notices/index.ts | 34 -
.../assets/js/data/store-notices/reducers.ts | 34 -
.../assets/js/data/store-notices/selectors.ts | 8 -
.../assets/js/data/utils/has-in-state.ts | 27 -
.../assets/js/data/utils/index.js | 3 -
.../js/data/utils/process-error-response.ts | 159 -
.../assets/js/data/utils/update-state.ts | 37 -
.../assets/js/data/validation/action-types.ts | 8 -
.../assets/js/data/validation/actions.ts | 70 -
.../assets/js/data/validation/constants.ts | 1 -
.../assets/js/data/validation/index.ts | 35 -
.../assets/js/data/validation/reducers.ts | 98 -
.../assets/js/data/validation/selectors.ts | 38 -
.../js/data/validation/test/reducers.ts | 273 -
.../js/data/validation/test/selectors.ts | 58 -
.../editor-components/block-title/editor.scss | 6 -
.../editor-components/block-title/index.tsx | 46 -
.../editor-components/color-panel/index.tsx | 158 -
.../js/editor-components/color-panel/types.ts | 46 -
.../default-notice/editor.scss | 18 -
.../default-notice/index.tsx | 158 -
.../edit-product-link/index.tsx | 56 -
.../editable-button/index.tsx | 42 -
.../error-placeholder/editor.scss | 18 -
.../error-placeholder/error-message.tsx | 60 -
.../error-placeholder/index.tsx | 75 -
.../stories/error-message.stories.tsx | 27 -
.../stories/error-placeholder.stories.tsx | 74 -
.../expandable-search-list-item.tsx | 51 -
.../external-link-card/editor.scss | 50 -
.../external-link-card/index.tsx | 72 -
.../stories/index.stories.tsx | 26 -
.../feedback-prompt/index.tsx | 98 -
.../feedback-prompt/style.scss | 19 -
.../grid-content-control/index.tsx | 70 -
.../grid-layout-control/index.tsx | 107 -
.../heading-toolbar/heading-level-icon.js | 29 -
.../heading-toolbar/index.js | 59 -
.../incompatible-extension-notice/editor.scss | 63 -
.../incompatible-extension-notice/index.tsx | 280 -
.../incompatible-extension-notice/modal.tsx | 46 -
.../use-combined-incompatibility-notice.ts | 127 -
.../use-incompatible-extensions-notice.ts | 34 -
...se-incompatible-payment-gateways-notice.ts | 35 -
.../no-payment-methods-notice/editor.scss | 7 -
.../no-payment-methods-notice/index.tsx | 39 -
.../editor-components/page-selector/index.js | 48 -
.../product-attribute-term-control/index.tsx | 238 -
.../product-attribute-term-control/style.scss | 35 -
.../product-category-control/index.js | 234 -
.../product-category-control/style.scss | 10 -
.../product-control/index.tsx | 238 -
.../product-control/style.scss | 45 -
.../product-orderby-control/index.tsx | 80 -
.../product-orderby-control/types.ts | 4 -
.../product-stock-control/index.tsx | 107 -
.../product-tag-control/index.tsx | 142 -
.../product-tag-control/product-tag-item.tsx | 52 -
.../product-tag-control/style.scss | 10 -
.../product-tag-control/types.ts | 13 -
.../products-control/index.js | 109 -
.../search-list-control/index.ts | 2 -
.../search-list-control/item.tsx | 201 -
.../search-list-control.tsx | 357 --
.../search-list-control/style.scss | 302 -
.../test/__snapshots__/index.js.snap | 5422 -----------------
.../search-list-control/test/hierarchy.js | 204 -
.../search-list-control/test/index.js | 222 -
.../search-list-control/types.ts | 137 -
.../search-list-control/utils.tsx | 153 -
.../sidebar-compatibility-notice/editor.scss | 17 -
.../sidebar-compatibility-notice/index.tsx | 47 -
.../use-compatibility-notice.ts | 32 -
.../js/editor-components/tag/editor.scss | 43 -
.../assets/js/editor-components/tag/index.tsx | 104 -
.../tag/test/__snapshots__/index.js.snap | 545 --
.../js/editor-components/tag/test/index.js | 37 -
.../text-toolbar-button/index.js | 17 -
.../text-toolbar-button/style.scss | 13 -
.../js/editor-components/utils/index.js | 231 -
.../extensions/google-analytics/constants.ts | 2 -
.../js/extensions/google-analytics/index.ts | 293 -
.../js/extensions/google-analytics/utils.ts | 118 -
.../payment-methods/bacs/constants.js | 1 -
.../extensions/payment-methods/bacs/index.js | 53 -
.../payment-methods/cheque/constants.js | 1 -
.../payment-methods/cheque/index.js | 50 -
.../payment-methods/cod/constants.js | 1 -
.../extensions/payment-methods/cod/index.js | 83 -
.../payment-methods/paypal/constants.js | 1 -
.../payment-methods/paypal/index.js | 49 -
.../pickup-location/edit-location/form.tsx | 181 -
.../pickup-location/edit-location/index.tsx | 94 -
.../pickup-location/general-settings.tsx | 212 -
.../shipping-methods/pickup-location/index.js | 16 -
.../pickup-location/location-settings.tsx | 165 -
.../shipping-methods/pickup-location/save.tsx | 46 -
.../pickup-location/settings-context.tsx | 178 -
.../pickup-location/settings-page.tsx | 37 -
.../shipping-methods/pickup-location/types.ts | 54 -
.../shipping-methods/pickup-location/utils.ts | 127 -
.../shared-components/index.ts | 4 -
.../shared-components/settings-card/index.tsx | 65 -
.../settings-modal/index.tsx | 88 -
.../settings-section/index.tsx | 67 -
.../sortable-table/index.tsx | 300 -
.../assets/js/filters/block-list-block.js | 94 -
.../exclude-draft-status-from-analytics.js | 43 -
.../assets/js/filters/get-block-attributes.js | 47 -
.../woocommerce-blocks/assets/js/global.d.ts | 2 -
.../assets/js/hocs/index.js | 11 -
.../assets/js/hocs/test/with-categories.jsx | 107 -
.../assets/js/hocs/test/with-category.jsx | 131 -
.../js/hocs/test/with-product-variations.jsx | 185 -
.../assets/js/hocs/test/with-product.jsx | 129 -
.../js/hocs/test/with-searched-products.jsx | 90 -
...nsform-single-select-to-multiple-select.js | 37 -
.../assets/js/hocs/with-attributes.js | 123 -
.../assets/js/hocs/with-categories.js | 71 -
.../assets/js/hocs/with-category.js | 91 -
.../assets/js/hocs/with-product-variations.js | 194 -
.../assets/js/hocs/with-product.js | 83 -
.../assets/js/hocs/with-searched-products.tsx | 94 -
...sform-single-select-to-multiple-select.tsx | 39 -
.../assets/js/icons/docs/iconography.mdx | 25 -
.../assets/js/icons/index.js | 28 -
.../assets/js/icons/library/alert.tsx | 36 -
.../assets/js/icons/library/bag-alt.tsx | 23 -
.../assets/js/icons/library/bag.tsx | 29 -
.../assets/js/icons/library/barcode.tsx | 12 -
.../assets/js/icons/library/cart-outline.tsx | 25 -
.../assets/js/icons/library/cart.tsx | 13 -
.../assets/js/icons/library/check-payment.tsx | 24 -
.../library/customer-account-style-alt.tsx | 15 -
.../icons/library/customer-account-style.tsx | 17 -
.../js/icons/library/customer-account.tsx | 18 -
.../assets/js/icons/library/eye.tsx | 13 -
.../assets/js/icons/library/fields.tsx | 23 -
.../assets/js/icons/library/filled-cart.tsx | 19 -
.../js/icons/library/folder-starred.tsx | 13 -
.../assets/js/icons/library/mini-cart-alt.tsx | 21 -
.../assets/js/icons/library/mini-cart.tsx | 32 -
.../js/icons/library/product-details.tsx | 27 -
.../assets/js/icons/library/product-meta.tsx | 21 -
.../assets/js/icons/library/remove-cart.tsx | 13 -
.../assets/js/icons/library/sparkles.tsx | 15 -
.../assets/js/icons/library/stacks.tsx | 16 -
.../assets/js/icons/library/thumb-up.tsx | 13 -
.../library/thumbnails-position-bottom.tsx | 33 -
.../library/thumbnails-position-left.tsx | 45 -
.../library/thumbnails-position-right.tsx | 45 -
.../assets/js/icons/library/toggle.tsx | 13 -
.../assets/js/icons/library/totals.tsx | 27 -
.../assets/js/icons/library/woo.tsx | 31 -
.../woocommerce-blocks/assets/js/index.js | 42 -
.../assets/js/interactivity/constants.js | 2 -
.../assets/js/interactivity/directives.js | 291 -
.../assets/js/interactivity/hooks.js | 140 -
.../assets/js/interactivity/index.js | 15 -
.../assets/js/interactivity/router.js | 121 -
.../assets/js/interactivity/store.js | 46 -
.../assets/js/interactivity/utils.js | 63 -
.../assets/js/interactivity/vdom.js | 105 -
.../assets/js/middleware/index.js | 4 -
.../assets/js/middleware/store-api-nonce.js | 121 -
.../assets/js/previews/cart.ts | 645 --
.../assets/js/previews/categories.js | 30 -
.../assets/js/previews/grid-block.js | 399 --
.../assets/js/previews/index.js | 9 -
.../assets/js/previews/products.js | 67 -
.../assets/js/previews/reviews.js | 56 -
.../js/previews/saved-payment-methods.js | 14 -
.../assets/js/previews/shipping-rates.ts | 139 -
.../js/previews/single-product-block.tsx | 11 -
.../assets/js/settings/blocks/constants.ts | 113 -
.../js/settings/blocks/feature-flags.ts | 52 -
.../assets/js/settings/blocks/index.ts | 5 -
.../settings/shared/default-address-fields.ts | 184 -
.../js/settings/shared/default-constants.ts | 29 -
.../assets/js/settings/shared/index.ts | 9 -
.../js/settings/shared/settings-init.ts | 109 -
.../shared/test/compare-with-wp-version.js | 26 -
.../shared/test/get-setting-with-coercion.ts | 33 -
.../js/settings/shared/test/get-setting.js | 20 -
.../assets/js/settings/shared/utils.ts | 140 -
.../assets/js/shared/context/index.js | 2 -
.../context/inner-block-layout-context.tsx | 45 -
.../shared/context/product-data-context.tsx | 105 -
.../assets/js/shared/hocs/index.js | 2 -
.../shared/hocs/with-filtered-attributes.js | 26 -
.../shared/hocs/with-product-data-context.js | 75 -
.../js/templates/revert-button/index.tsx | 176 -
.../js/templates/revert-button/style.scss | 8 -
.../assets/js/types/index.ts | 2 -
.../js/types/type-defs/add-to-cart-form.js | 43 -
.../js/types/type-defs/address-fields.js | 27 -
.../js/types/type-defs/api-error-response.ts | 28 -
.../assets/js/types/type-defs/api-response.ts | 37 -
.../assets/js/types/type-defs/attributes.ts | 43 -
.../assets/js/types/type-defs/billing.js | 17 -
.../assets/js/types/type-defs/blocks.ts | 12 -
.../js/types/type-defs/cart-response.ts | 184 -
.../assets/js/types/type-defs/cart.js | 215 -
.../assets/js/types/type-defs/cart.ts | 224 -
.../assets/js/types/type-defs/checkout.ts | 30 -
.../assets/js/types/type-defs/contexts.js | 191 -
.../assets/js/types/type-defs/contexts.ts | 20 -
.../assets/js/types/type-defs/currency.ts | 211 -
.../assets/js/types/type-defs/events.ts | 4 -
.../assets/js/types/type-defs/hocs.ts | 27 -
.../assets/js/types/type-defs/hooks.js | 165 -
.../assets/js/types/type-defs/hooks.ts | 71 -
.../assets/js/types/type-defs/index.ts | 22 -
.../assets/js/types/type-defs/notices.ts | 12 -
.../assets/js/types/type-defs/objects.ts | 2 -
.../type-defs/payment-method-interface.ts | 194 -
.../assets/js/types/type-defs/payments.ts | 178 -
.../js/types/type-defs/product-response.ts | 94 -
.../assets/js/types/type-defs/settings.js | 56 -
.../assets/js/types/type-defs/shipping.js | 15 -
.../assets/js/types/type-defs/shipping.ts | 13 -
.../assets/js/types/type-defs/stock-status.ts | 5 -
.../assets/js/types/type-defs/taxes.ts | 7 -
.../assets/js/types/type-defs/trim-html.d.ts | 60 -
.../assets/js/types/type-defs/utils.ts | 16 -
.../assets/js/types/type-defs/validation.ts | 16 -
.../assets/js/types/type-guards/address.ts | 28 -
.../types/type-guards/api-error-response.ts | 16 -
.../assets/js/types/type-guards/attributes.ts | 46 -
.../assets/js/types/type-guards/boolean.ts | 3 -
.../types/type-guards/cart-response-totals.ts | 42 -
.../assets/js/types/type-guards/empty.ts | 8 -
.../assets/js/types/type-guards/error.ts | 3 -
.../assets/js/types/type-guards/function.ts | 6 -
.../assets/js/types/type-guards/index.ts | 13 -
.../assets/js/types/type-guards/null.ts | 3 -
.../assets/js/types/type-guards/number.ts | 3 -
.../assets/js/types/type-guards/object.ts | 29 -
.../assets/js/types/type-guards/observers.ts | 14 -
.../assets/js/types/type-guards/ratings.ts | 10 -
.../js/types/type-guards/stock-status.ts | 27 -
.../assets/js/types/type-guards/string.ts | 3 -
.../assets/js/types/type-guards/test/empty.ts | 25 -
.../assets/js/types/type-guards/test/index.ts | 95 -
.../js/types/type-guards/test/object.ts | 25 -
.../js/types/type-guards/test/validation.ts | 57 -
.../assets/js/types/type-guards/validation.ts | 41 -
.../assets/js/utils/array-operations.ts | 17 -
.../assets/js/utils/attributes-query.ts | 95 -
.../assets/js/utils/attributes.ts | 143 -
.../assets/js/utils/filters.ts | 79 -
.../assets/js/utils/find-block.ts | 35 -
.../assets/js/utils/index.ts | 13 -
.../assets/js/utils/is-site-editor-page.ts | 21 -
.../assets/js/utils/is-widget-editor-page.ts | 18 -
.../assets/js/utils/notices.ts | 26 -
.../assets/js/utils/object-operations.ts | 8 -
.../assets/js/utils/products.ts | 46 -
.../assets/js/utils/sanitize-html.ts | 20 -
.../assets/js/utils/shared-attributes.js | 84 -
.../assets/js/utils/test/filters.js | 27 -
.../assets/js/utils/test/notices.js | 122 -
.../assets/js/utils/test/products.js | 84 -
.../assets/js/utils/test/trim-words.ts | 91 -
.../assets/js/utils/trim-words.ts | 100 -
.../build/2589-style.js.LICENSE.txt | 5 -
.../woocommerce-blocks/build/3810-frontend.js | 1 -
.../woocommerce-blocks/build/4124-frontend.js | 1 -
.../build/4597-style.js.LICENSE.txt | 8 -
.../woocommerce-blocks/build/8280-frontend.js | 1 -
.../build/active-filters-frontend.asset.php | 1 -
.../build/active-filters-frontend.js | 6 -
.../build/active-filters-rtl.css | 3 -
.../build/active-filters-style.asset.php | 1 -
.../build/active-filters-style.js.LICENSE.txt | 5 -
.../build/active-filters-wrapper-frontend.js | 6 -
.../build/active-filters-wrapper-rtl.css | 2 -
.../build/active-filters-wrapper.css | 2 -
.../build/active-filters.asset.php | 1 -
.../build/active-filters.css | 3 -
.../build/active-filters.js | 6 -
.../build/active-filters/block.json | 31 -
.../build/add-to-cart-form-rtl.css | 2 -
.../build/add-to-cart-form-style.asset.php | 1 -
.../build/add-to-cart-form.css | 2 -
.../build/add-to-cart-form/block.json | 18 -
.../build/all-products-frontend.asset.php | 1 -
.../build/all-products-frontend.js | 5 -
.../build/all-products-rtl.css | 25 -
.../build/all-products-style.asset.php | 1 -
.../build/all-products-style.js.LICENSE.txt | 14 -
.../build/all-products.asset.php | 1 -
.../woocommerce-blocks/build/all-products.css | 25 -
.../woocommerce-blocks/build/all-products.js | 25 -
.../build/all-products/block.json | 39 -
.../build/all-reviews-rtl.css | 4 -
.../build/all-reviews-style.asset.php | 1 -
.../build/all-reviews-style.js.LICENSE.txt | 5 -
.../build/all-reviews.asset.php | 1 -
.../woocommerce-blocks/build/all-reviews.css | 4 -
.../woocommerce-blocks/build/all-reviews.js | 7 -
.../build/attribute-filter-frontend.asset.php | 1 -
.../build/attribute-filter-frontend.js | 15 -
.../build/attribute-filter-rtl.css | 7 -
.../build/attribute-filter-style.asset.php | 1 -
.../attribute-filter-style.js.LICENSE.txt | 5 -
.../attribute-filter-wrapper-frontend.js | 15 -
.../build/attribute-filter-wrapper-rtl.css | 6 -
.../build/attribute-filter-wrapper.css | 6 -
.../build/attribute-filter.asset.php | 1 -
.../build/attribute-filter.css | 7 -
.../build/attribute-filter.js | 17 -
.../build/attribute-filter/block.json | 58 -
.../build/blocks-checkout.asset.php | 1 -
.../build/blocks-checkout.js | 4 -
.../build/blocks-components.asset.php | 1 -
.../build/blocks-components.js | 6 -
.../build/breadcrumbs-rtl.css | 1 -
.../build/breadcrumbs-style.asset.php | 1 -
.../build/breadcrumbs.asset.php | 1 -
.../woocommerce-blocks/build/breadcrumbs.css | 1 -
.../woocommerce-blocks/build/breadcrumbs.js | 1 -
.../build/breadcrumbs/block.json | 36 -
.../cart-accepted-payment-methods-frontend.js | 1 -
.../cart-accepted-payment-methods-style.js | 1 -
.../cart-blocks/cart-cross-sells-frontend.js | 1 -
.../cart-cross-sells-products-frontend.js | 7 -
.../cart-cross-sells-products-style.js | 1 -
.../cart-blocks/cart-cross-sells-style.js | 1 -
.../cart-express-payment-frontend.js | 3 -
.../cart-blocks/cart-express-payment-style.js | 1 -
.../build/cart-blocks/cart-items-frontend.js | 1 -
.../build/cart-blocks/cart-items-style.js | 1 -
.../cart-blocks/cart-line-items-frontend.js | 11 -
.../cart-blocks/cart-line-items-style.js | 1 -
.../cart-order-summary-frontend.js | 12 -
.../cart-blocks/cart-order-summary-style.js | 1 -
.../build/cart-blocks/cart-totals-frontend.js | 1 -
.../build/cart-blocks/cart-totals-style.js | 1 -
.../build/cart-blocks/empty-cart-frontend.js | 1 -
.../build/cart-blocks/empty-cart-style.js | 1 -
.../build/cart-blocks/filled-cart-frontend.js | 1 -
.../build/cart-blocks/filled-cart-style.js | 1 -
.../order-summary-coupon-form-frontend.js | 14 -
.../order-summary-coupon-form-style.js | 1 -
.../order-summary-discount-frontend.js | 14 -
.../order-summary-discount-style.js | 1 -
.../cart-blocks/order-summary-fee-frontend.js | 1 -
.../cart-blocks/order-summary-fee-style.js | 1 -
.../order-summary-heading-frontend.js | 1 -
.../order-summary-heading-style.js | 1 -
.../order-summary-shipping-frontend.js | 12 -
.../order-summary-shipping-style.js | 1 -
.../order-summary-subtotal-frontend.js | 1 -
.../order-summary-subtotal-style.js | 1 -
.../order-summary-taxes-frontend.js | 1 -
.../cart-blocks/order-summary-taxes-style.js | 1 -
.../proceed-to-checkout-frontend.js | 1 -
.../cart-blocks/proceed-to-checkout-style.js | 1 -
.../build/cart-frontend.asset.php | 1 -
.../woocommerce-blocks/build/cart-frontend.js | 2 -
.../woocommerce-blocks/build/cart-rtl.css | 36 -
.../build/cart-style.asset.php | 1 -
.../build/cart-style.js.LICENSE.txt | 7 -
.../woocommerce-blocks/build/cart.asset.php | 1 -
.../woocommerce-blocks/build/cart.css | 36 -
.../packages/woocommerce-blocks/build/cart.js | 31 -
.../build/catalog-sorting-rtl.css | 1 -
.../build/catalog-sorting-style.asset.php | 1 -
.../build/catalog-sorting.asset.php | 1 -
.../build/catalog-sorting.css | 1 -
.../build/catalog-sorting.js | 1 -
.../build/catalog-sorting/block.json | 26 -
.../build/checkout-blocks/actions-frontend.js | 1 -
.../build/checkout-blocks/actions-style.js | 1 -
.../billing-address-frontend.js | 3 -
.../checkout-blocks/billing-address-style.js | 1 -
.../contact-information-frontend.js | 1 -
.../contact-information-style.js | 1 -
.../express-payment-frontend.js | 3 -
.../build/checkout-blocks/fields-frontend.js | 1 -
.../build/checkout-blocks/fields-style.js | 1 -
.../checkout-blocks/order-note-frontend.js | 1 -
.../order-summary-cart-items-frontend.js | 5 -
.../order-summary-cart-items-style.js | 1 -
.../order-summary-coupon-form-frontend.js | 14 -
.../order-summary-coupon-form-style.js | 1 -
.../order-summary-discount-frontend.js | 14 -
.../order-summary-discount-style.js | 1 -
.../order-summary-fee-frontend.js | 1 -
.../order-summary-fee-style.js | 1 -
.../checkout-blocks/order-summary-frontend.js | 12 -
.../order-summary-shipping-frontend.js | 12 -
.../order-summary-shipping-style.js | 1 -
.../checkout-blocks/order-summary-style.js | 1 -
.../order-summary-subtotal-frontend.js | 1 -
.../order-summary-subtotal-style.js | 1 -
.../order-summary-taxes-frontend.js | 1 -
.../order-summary-taxes-style.js | 1 -
.../build/checkout-blocks/payment-frontend.js | 6 -
.../build/checkout-blocks/payment-style.js | 1 -
.../pickup-options-frontend.js | 3 -
.../checkout-blocks/pickup-options-style.js | 1 -
.../shipping-address-frontend.js | 3 -
.../checkout-blocks/shipping-address-style.js | 1 -
.../shipping-method-frontend.js | 1 -
.../checkout-blocks/shipping-method-style.js | 1 -
.../shipping-methods-frontend.js | 5 -
.../checkout-blocks/shipping-methods-style.js | 1 -
.../build/checkout-blocks/terms-frontend.js | 3 -
.../build/checkout-blocks/terms-style.js | 1 -
.../build/checkout-blocks/totals-frontend.js | 1 -
.../build/checkout-blocks/totals-style.js | 1 -
.../build/checkout-frontend.asset.php | 1 -
.../build/checkout-frontend.js | 2 -
.../woocommerce-blocks/build/checkout-rtl.css | 42 -
.../build/checkout-style.asset.php | 1 -
.../build/checkout-style.js.LICENSE.txt | 7 -
.../build/checkout.asset.php | 1 -
.../woocommerce-blocks/build/checkout.css | 42 -
.../woocommerce-blocks/build/checkout.js | 26 -
.../build/checkout/block.json | 53 -
.../build/classic-shortcode-rtl.css | 1 -
.../build/classic-shortcode-style.asset.php | 1 -
.../classic-shortcode-style.js.LICENSE.txt | 5 -
.../build/classic-shortcode.asset.php | 1 -
.../build/classic-shortcode.css | 1 -
.../build/classic-shortcode.js | 1 -
.../build/classic-shortcode/block.json | 29 -
.../build/collection-filters-style.asset.php | 1 -
.../build/collection-filters.asset.php | 1 -
.../build/collection-filters.js | 1 -
.../build/collection-filters/block.json | 33 -
...collection-price-filter-frontend.asset.php | 1 -
.../build/collection-price-filter-frontend.js | 1 -
.../build/collection-price-filter-rtl.css | 1 -
.../collection-price-filter-style.asset.php | 1 -
...llection-price-filter-style.js.LICENSE.txt | 5 -
.../build/collection-price-filter.asset.php | 1 -
.../build/collection-price-filter.css | 1 -
.../build/collection-price-filter.js | 1 -
.../build/collection-price-filter/block.json | 38 -
...collection-stock-filter-frontend.asset.php | 1 -
.../build/collection-stock-filter-frontend.js | 1 -
.../build/collection-stock-filter-rtl.css | 3 -
.../collection-stock-filter-style.asset.php | 1 -
...llection-stock-filter-style.js.LICENSE.txt | 5 -
.../build/collection-stock-filter.asset.php | 1 -
.../build/collection-stock-filter.css | 3 -
.../build/collection-stock-filter.js | 2 -
.../build/collection-stock-filter/block.json | 46 -
.../build/customer-account-rtl.css | 1 -
.../build/customer-account-style.asset.php | 1 -
.../customer-account-style.js.LICENSE.txt | 5 -
.../build/customer-account.asset.php | 1 -
.../build/customer-account.css | 1 -
.../build/customer-account.js | 1 -
.../build/customer-account/block.json | 38 -
.../build/featured-category-rtl.css | 1 -
.../build/featured-category-style.asset.php | 1 -
.../featured-category-style.js.LICENSE.txt | 5 -
.../build/featured-category.asset.php | 1 -
.../build/featured-category.css | 1 -
.../build/featured-category.js | 14 -
.../build/featured-category/block.json | 108 -
.../build/featured-product-rtl.css | 1 -
.../build/featured-product-style.asset.php | 1 -
.../featured-product-style.js.LICENSE.txt | 5 -
.../build/featured-product.asset.php | 1 -
.../build/featured-product.css | 1 -
.../build/featured-product.js | 14 -
.../build/featured-product/block.json | 108 -
.../build/filter-wrapper-frontend.asset.php | 1 -
.../build/filter-wrapper-frontend.js | 1 -
.../build/filter-wrapper-rtl.css | 1 -
.../build/filter-wrapper-style.asset.php | 1 -
.../build/filter-wrapper.asset.php | 1 -
.../build/filter-wrapper.css | 1 -
.../build/filter-wrapper.js | 1 -
.../build/filter-wrapper/block.json | 18 -
.../build/handpicked-products-style.asset.php | 1 -
.../handpicked-products-style.js.LICENSE.txt | 5 -
.../build/handpicked-products.asset.php | 1 -
.../build/handpicked-products.js | 7 -
.../build/handpicked-products/block.json | 80 -
.../block.json | 18 -
.../cart-cross-sells-block/block.json | 18 -
.../block.json | 32 -
.../cart-express-payment-block/block.json | 28 -
.../inner-blocks/cart-items-block/block.json | 28 -
.../cart-line-items-block/block.json | 28 -
.../cart-order-summary-block/block.json | 28 -
.../block.json | 30 -
.../block.json | 31 -
.../cart-order-summary-fee-block/block.json | 31 -
.../block.json | 34 -
.../block.json | 27 -
.../block.json | 31 -
.../cart-order-summary-taxes-block/block.json | 31 -
.../inner-blocks/cart-totals-block/block.json | 35 -
.../checkout-actions-block/block.json | 28 -
.../checkout-billing-address-block/block.json | 28 -
.../block.json | 28 -
.../checkout-express-payment-block/block.json | 32 -
.../checkout-fields-block/block.json | 32 -
.../checkout-order-note-block/block.json | 30 -
.../checkout-order-summary-block/block.json | 27 -
.../block.json | 31 -
.../block.json | 30 -
.../block.json | 31 -
.../block.json | 31 -
.../block.json | 27 -
.../block.json | 31 -
.../block.json | 31 -
.../checkout-payment-block/block.json | 28 -
.../checkout-pickup-options-block/block.json | 28 -
.../block.json | 28 -
.../checkout-shipping-method-block/block.json | 28 -
.../block.json | 28 -
.../checkout-terms-block/block.json | 31 -
.../checkout-totals-block/block.json | 33 -
.../inner-blocks/empty-cart-block/block.json | 28 -
.../empty-mini-cart-contents-block/block.json | 28 -
.../inner-blocks/filled-cart-block/block.json | 28 -
.../block.json | 28 -
.../mini-cart-cart-button-block/block.json | 42 -
.../block.json | 44 -
.../mini-cart-footer-block/block.json | 28 -
.../mini-cart-items-block/block.json | 28 -
.../mini-cart-products-table-block/block.json | 28 -
.../block.json | 42 -
.../mini-cart-title-block/block.json | 35 -
.../block.json | 29 -
.../mini-cart-title-label-block/block.json | 34 -
.../proceed-to-checkout-block/block.json | 27 -
.../build/legacy-template-rtl.css | 1 -
.../build/legacy-template-style.asset.php | 1 -
.../legacy-template-style.js.LICENSE.txt | 5 -
.../build/legacy-template.asset.php | 1 -
.../build/legacy-template.css | 1 -
.../build/legacy-template.js | 7 -
.../mini-cart-component-frontend.asset.php | 1 -
.../build/mini-cart-component-frontend.js | 4 -
.../cart-button-frontend.js | 1 -
.../cart-button-style.js | 1 -
.../checkout-button-frontend.js | 1 -
.../checkout-button-style.js | 1 -
.../empty-cart-frontend.js | 1 -
.../empty-cart-style.js | 1 -
.../filled-cart-frontend.js | 1 -
.../filled-cart-style.js | 1 -
.../footer-frontend.js | 1 -
.../mini-cart-contents-block/footer-style.js | 1 -
.../items-frontend.js | 1 -
.../mini-cart-contents-block/items-style.js | 1 -
.../products-table-frontend.js | 11 -
.../shopping-button-frontend.js | 1 -
.../shopping-button-style.js | 1 -
.../title-frontend.js | 2 -
.../title-items-counter-frontend.js | 2 -
.../title-items-counter-style.js | 1 -
.../title-label-frontend.js | 1 -
.../title-label-style.js | 1 -
.../mini-cart-contents-block/title-style.js | 1 -
.../build/mini-cart-contents-rtl.css | 11 -
.../build/mini-cart-contents-style.asset.php | 1 -
.../mini-cart-contents-style.js.LICENSE.txt | 5 -
.../build/mini-cart-contents.asset.php | 1 -
.../build/mini-cart-contents.css | 11 -
.../build/mini-cart-contents.js | 13 -
.../build/mini-cart-frontend.asset.php | 1 -
.../build/mini-cart-frontend.js | 3 -
.../build/mini-cart-rtl.css | 5 -
.../build/mini-cart-style.asset.php | 1 -
.../build/mini-cart-style.js.LICENSE.txt | 5 -
.../build/mini-cart.asset.php | 1 -
.../woocommerce-blocks/build/mini-cart.css | 5 -
.../woocommerce-blocks/build/mini-cart.js | 1 -
.../build/mini-cart/block.json | 65 -
...onfirmation-additional-information-rtl.css | 2 -
...ion-additional-information-style.asset.php | 1 -
...firmation-additional-information.asset.php | 1 -
...er-confirmation-additional-information.css | 2 -
...der-confirmation-additional-information.js | 1 -
.../block.json | 44 -
...order-confirmation-billing-address-rtl.css | 1 -
...nfirmation-billing-address-style.asset.php | 1 -
...der-confirmation-billing-address.asset.php | 1 -
.../order-confirmation-billing-address.css | 1 -
.../order-confirmation-billing-address.js | 1 -
.../block.json | 62 -
...nfirmation-billing-wrapper-style.asset.php | 1 -
...der-confirmation-billing-wrapper.asset.php | 1 -
.../order-confirmation-billing-wrapper.js | 1 -
.../block.json | 29 -
.../order-confirmation-downloads-rtl.css | 1 -
...der-confirmation-downloads-style.asset.php | 1 -
...irmation-downloads-wrapper-style.asset.php | 1 -
...ion-downloads-wrapper-style.js.LICENSE.txt | 5 -
...r-confirmation-downloads-wrapper.asset.php | 1 -
.../order-confirmation-downloads-wrapper.js | 1 -
.../block.json | 29 -
.../order-confirmation-downloads.asset.php | 1 -
.../build/order-confirmation-downloads.css | 1 -
.../build/order-confirmation-downloads.js | 1 -
.../order-confirmation-downloads/block.json | 68 -
...rder-confirmation-shipping-address-rtl.css | 1 -
...firmation-shipping-address-style.asset.php | 1 -
...er-confirmation-shipping-address.asset.php | 1 -
.../order-confirmation-shipping-address.css | 1 -
.../order-confirmation-shipping-address.js | 1 -
.../block.json | 62 -
...firmation-shipping-wrapper-style.asset.php | 1 -
...er-confirmation-shipping-wrapper.asset.php | 1 -
.../order-confirmation-shipping-wrapper.js | 1 -
.../block.json | 30 -
.../build/order-confirmation-status-rtl.css | 1 -
.../order-confirmation-status-style.asset.php | 1 -
.../build/order-confirmation-status.asset.php | 1 -
.../build/order-confirmation-status.css | 1 -
.../build/order-confirmation-status.js | 1 -
.../order-confirmation-status/block.json | 56 -
.../build/order-confirmation-summary-rtl.css | 1 -
...order-confirmation-summary-style.asset.php | 1 -
.../order-confirmation-summary.asset.php | 1 -
.../build/order-confirmation-summary.css | 1 -
.../build/order-confirmation-summary.js | 1 -
.../order-confirmation-summary/block.json | 65 -
.../build/order-confirmation-totals-rtl.css | 1 -
.../order-confirmation-totals-style.asset.php | 1 -
...onfirmation-totals-wrapper-style.asset.php | 1 -
...rder-confirmation-totals-wrapper.asset.php | 1 -
.../order-confirmation-totals-wrapper.js | 1 -
.../block.json | 29 -
.../build/order-confirmation-totals.asset.php | 1 -
.../build/order-confirmation-totals.css | 1 -
.../build/order-confirmation-totals.js | 1 -
.../order-confirmation-totals/block.json | 68 -
.../build/packages-style-rtl.css | 19 -
.../build/packages-style-style.asset.php | 1 -
.../build/packages-style-style.js.LICENSE.txt | 38 -
.../build/packages-style.css | 19 -
.../page-content-wrapper-style.asset.php | 1 -
.../build/page-content-wrapper.asset.php | 1 -
.../build/page-content-wrapper.js | 1 -
.../build/page-content-wrapper/block.json | 26 -
.../build/price-filter-frontend.asset.php | 1 -
.../build/price-filter-frontend.js | 5 -
.../build/price-filter-rtl.css | 6 -
.../build/price-filter-style.asset.php | 1 -
.../build/price-filter-style.js.LICENSE.txt | 5 -
.../build/price-filter-wrapper-frontend.js | 5 -
.../build/price-filter-wrapper-rtl.css | 5 -
.../build/price-filter-wrapper.css | 5 -
.../build/price-filter.asset.php | 1 -
.../woocommerce-blocks/build/price-filter.css | 6 -
.../woocommerce-blocks/build/price-filter.js | 5 -
.../build/price-filter/block.json | 43 -
.../build/price-format.asset.php | 1 -
.../woocommerce-blocks/build/price-format.js | 1 -
.../build/product-add-to-cart-frontend.js | 3 -
.../build/product-add-to-cart-rtl.css | 4 -
.../build/product-add-to-cart.css | 4 -
.../build/product-add-to-cart.js | 3 -
.../build/product-average-rating-frontend.js | 1 -
.../build/product-average-rating.js | 1 -
.../build/product-average-rating/block.json | 17 -
.../product-best-sellers-style.asset.php | 1 -
.../product-best-sellers-style.js.LICENSE.txt | 5 -
.../build/product-best-sellers.asset.php | 1 -
.../build/product-best-sellers.js | 11 -
.../build/product-best-sellers/block.json | 92 -
.../build/product-button-frontend.js | 3 -
...ct-button-interactivity-frontend.asset.php | 1 -
.../product-button-interactivity-frontend.js | 1 -
.../build/product-button-rtl.css | 1 -
.../build/product-button.css | 1 -
.../build/product-button.js | 3 -
.../build/product-button/block.json | 66 -
.../build/product-categories-rtl.css | 1 -
.../build/product-categories-style.asset.php | 1 -
.../build/product-categories.asset.php | 1 -
.../build/product-categories.css | 1 -
.../build/product-categories.js | 1 -
.../build/product-categories/block.json | 57 -
.../build/product-category-style.asset.php | 1 -
.../product-category-style.js.LICENSE.txt | 5 -
.../build/product-category.asset.php | 1 -
.../build/product-category.js | 11 -
.../build/product-category/block.json | 92 -
...duct-collection-no-results-style.asset.php | 1 -
.../product-collection-no-results.asset.php | 1 -
.../build/product-collection-no-results.js | 1 -
.../product-collection-no-results/block.json | 35 -
.../build/product-collection-style.asset.php | 1 -
.../product-collection-style.js.LICENSE.txt | 5 -
.../build/product-collection.asset.php | 1 -
.../build/product-collection.js | 11 -
.../build/product-collection/block.json | 40 -
.../build/product-details-rtl.css | 1 -
.../build/product-details-style.asset.php | 1 -
.../product-details-style.js.LICENSE.txt | 5 -
.../build/product-details.css | 1 -
.../build/product-details/block.json | 18 -
.../build/product-gallery-frontend.asset.php | 1 -
.../build/product-gallery-frontend.js | 1 -
...uct-gallery-large-image-frontend.asset.php | 1 -
.../product-gallery-large-image-frontend.js | 1 -
...-large-image-next-previous-style.asset.php | 1 -
...e-image-next-previous-style.js.LICENSE.txt | 5 -
...allery-large-image-next-previous.asset.php | 1 -
...oduct-gallery-large-image-next-previous.js | 1 -
.../block.json | 25 -
...roduct-gallery-large-image-style.asset.php | 1 -
...t-gallery-large-image-style.js.LICENSE.txt | 5 -
.../product-gallery-large-image.asset.php | 1 -
.../build/product-gallery-large-image.js | 1 -
.../product-gallery-large-image/block.json | 16 -
.../product-gallery-pager-style.asset.php | 1 -
...product-gallery-pager-style.js.LICENSE.txt | 5 -
.../build/product-gallery-pager.asset.php | 1 -
.../build/product-gallery-pager.js | 1 -
.../build/product-gallery-pager/block.json | 13 -
.../build/product-gallery-rtl.css | 1 -
.../build/product-gallery-style.asset.php | 1 -
.../product-gallery-style.js.LICENSE.txt | 5 -
...product-gallery-thumbnails-style.asset.php | 1 -
...ct-gallery-thumbnails-style.js.LICENSE.txt | 5 -
.../product-gallery-thumbnails.asset.php | 1 -
.../build/product-gallery-thumbnails.js | 1 -
.../product-gallery-thumbnails/block.json | 21 -
.../build/product-gallery.asset.php | 1 -
.../build/product-gallery.css | 1 -
.../build/product-gallery.js | 1 -
.../build/product-gallery/block.json | 68 -
.../build/product-image-frontend.js | 2 -
.../build/product-image-gallery-rtl.css | 1 -
.../product-image-gallery-style.asset.php | 1 -
.../build/product-image-gallery.css | 1 -
.../build/product-image-gallery/block.json | 17 -
.../build/product-image-rtl.css | 2 -
.../build/product-image.css | 2 -
.../woocommerce-blocks/build/product-image.js | 2 -
.../build/product-meta/block.json | 17 -
.../build/product-new-style.asset.php | 1 -
.../build/product-new-style.js.LICENSE.txt | 5 -
.../build/product-new.asset.php | 1 -
.../woocommerce-blocks/build/product-new.js | 11 -
.../build/product-new/block.json | 92 -
.../build/product-on-sale-style.asset.php | 1 -
.../product-on-sale-style.js.LICENSE.txt | 5 -
.../build/product-on-sale.asset.php | 1 -
.../build/product-on-sale.js | 11 -
.../build/product-price-frontend.js | 2 -
.../build/product-price-rtl.css | 1 -
.../build/product-price.css | 1 -
.../woocommerce-blocks/build/product-price.js | 2 -
.../build/product-query-rtl.css | 1 -
.../build/product-query-style.asset.php | 1 -
.../build/product-query-style.js.LICENSE.txt | 5 -
.../build/product-query.asset.php | 1 -
.../build/product-query.css | 1 -
.../woocommerce-blocks/build/product-query.js | 13 -
.../build/product-rating-counter-frontend.js | 2 -
.../build/product-rating-counter.js | 2 -
.../build/product-rating-counter/block.json | 38 -
.../build/product-rating-frontend.js | 4 -
.../build/product-rating-rtl.css | 1 -
.../build/product-rating-stars-frontend.js | 3 -
.../build/product-rating-stars-rtl.css | 1 -
.../build/product-rating-stars.css | 1 -
.../build/product-rating-stars.js | 3 -
.../build/product-rating-stars/block.json | 38 -
.../build/product-rating.css | 1 -
.../build/product-rating.js | 4 -
.../build/product-rating/block.json | 38 -
.../build/product-results-count-rtl.css | 1 -
.../product-results-count-style.asset.php | 1 -
.../build/product-results-count.asset.php | 1 -
.../build/product-results-count.css | 1 -
.../build/product-results-count.js | 1 -
.../build/product-results-count/block.json | 21 -
.../build/product-reviews-rtl.css | 1 -
.../build/product-reviews-style.asset.php | 1 -
.../build/product-reviews.css | 1 -
.../build/product-reviews/block.json | 15 -
.../build/product-sale-badge-frontend.js | 1 -
.../build/product-sale-badge-rtl.css | 1 -
.../build/product-sale-badge.css | 1 -
.../build/product-sale-badge.js | 1 -
.../build/product-search-rtl.css | 1 -
.../build/product-search-style.asset.php | 1 -
.../build/product-search-style.js.LICENSE.txt | 5 -
.../build/product-search.asset.php | 1 -
.../build/product-search.css | 1 -
.../build/product-search.js | 1 -
.../build/product-sku-frontend.js | 1 -
.../build/product-sku-rtl.css | 1 -
.../woocommerce-blocks/build/product-sku.css | 1 -
.../woocommerce-blocks/build/product-sku.js | 1 -
.../build/product-stock-indicator-frontend.js | 2 -
.../build/product-stock-indicator-rtl.css | 1 -
.../build/product-stock-indicator.css | 1 -
.../build/product-stock-indicator.js | 2 -
.../build/product-summary-frontend.js | 1 -
.../build/product-summary-rtl.css | 1 -
.../build/product-summary.css | 1 -
.../build/product-summary.js | 1 -
.../build/product-tag-style.asset.php | 1 -
.../build/product-tag-style.js.LICENSE.txt | 5 -
.../build/product-tag.asset.php | 1 -
.../woocommerce-blocks/build/product-tag.js | 8 -
.../build/product-tag/block.json | 79 -
.../build/product-template-rtl.css | 1 -
.../build/product-template-style.asset.php | 1 -
.../product-template-style.js.LICENSE.txt | 5 -
.../build/product-template.asset.php | 1 -
.../build/product-template.css | 1 -
.../build/product-template.js | 1 -
.../build/product-template/block.json | 48 -
.../build/product-title-frontend.js | 1 -
.../build/product-title-rtl.css | 2 -
.../build/product-title.css | 2 -
.../woocommerce-blocks/build/product-title.js | 1 -
.../build/product-top-rated-style.asset.php | 1 -
.../product-top-rated-style.js.LICENSE.txt | 5 -
.../build/product-top-rated.asset.php | 1 -
.../build/product-top-rated.js | 11 -
.../build/product-top-rated/block.json | 92 -
.../products-by-attribute-style.asset.php | 1 -
...products-by-attribute-style.js.LICENSE.txt | 5 -
.../build/products-by-attribute.asset.php | 1 -
.../build/products-by-attribute.js | 11 -
.../build/products-by-attribute/block.json | 89 -
.../build/rating-filter-frontend.asset.php | 1 -
.../build/rating-filter-frontend.js | 13 -
.../build/rating-filter-rtl.css | 6 -
.../build/rating-filter-style.asset.php | 1 -
.../build/rating-filter-style.js.LICENSE.txt | 5 -
.../build/rating-filter-wrapper-frontend.js | 13 -
.../build/rating-filter-wrapper-rtl.css | 5 -
.../build/rating-filter-wrapper.css | 5 -
.../build/rating-filter.asset.php | 1 -
.../build/rating-filter.css | 6 -
.../woocommerce-blocks/build/rating-filter.js | 9 -
.../build/rating-filter/block.json | 44 -
.../build/related-products/block.json | 17 -
.../build/reviews-by-category-rtl.css | 4 -
.../build/reviews-by-category-style.asset.php | 1 -
.../reviews-by-category-style.js.LICENSE.txt | 5 -
.../build/reviews-by-category.asset.php | 1 -
.../build/reviews-by-category.css | 4 -
.../build/reviews-by-category.js | 17 -
.../build/reviews-by-product-rtl.css | 4 -
.../build/reviews-by-product-style.asset.php | 1 -
.../reviews-by-product-style.js.LICENSE.txt | 5 -
.../build/reviews-by-product.asset.php | 1 -
.../build/reviews-by-product.css | 4 -
.../build/reviews-by-product.js | 17 -
.../build/reviews-frontend.asset.php | 1 -
.../build/reviews-frontend.js | 4 -
.../build/single-product-rtl.css | 1 -
.../build/single-product-style.asset.php | 1 -
.../build/single-product-style.js.LICENSE.txt | 5 -
.../build/single-product.asset.php | 1 -
.../build/single-product.css | 1 -
.../build/single-product.js | 8 -
.../build/single-product/block.json | 30 -
.../build/stock-filter-frontend.asset.php | 1 -
.../build/stock-filter-frontend.js | 12 -
.../build/stock-filter-rtl.css | 7 -
.../build/stock-filter-style.asset.php | 1 -
.../build/stock-filter-style.js.LICENSE.txt | 5 -
.../build/stock-filter-wrapper-frontend.js | 12 -
.../build/stock-filter-wrapper-rtl.css | 6 -
.../build/stock-filter-wrapper.css | 6 -
.../build/stock-filter.asset.php | 1 -
.../woocommerce-blocks/build/stock-filter.css | 7 -
.../woocommerce-blocks/build/stock-filter.js | 8 -
.../build/stock-filter/block.json | 48 -
.../build/store-notices-style.asset.php | 1 -
.../build/store-notices.asset.php | 1 -
.../woocommerce-blocks/build/store-notices.js | 1 -
.../build/store-notices/block.json | 21 -
...assic-template-revert-button-style-rtl.css | 1 -
...mplate-revert-button-style-style.asset.php | 1 -
...s-classic-template-revert-button-style.css | 1 -
...s-classic-template-revert-button.asset.php | 1 -
...c-blocks-classic-template-revert-button.js | 1 -
.../build/wc-blocks-data.asset.php | 1 -
.../build/wc-blocks-data.js | 8 -
.../build/wc-blocks-editor-style-rtl.css | 67 -
.../build/wc-blocks-editor-style.css | 67 -
.../wc-blocks-google-analytics.asset.php | 1 -
.../build/wc-blocks-google-analytics.js | 1 -
.../build/wc-blocks-middleware.asset.php | 1 -
.../build/wc-blocks-middleware.js | 1 -
.../build/wc-blocks-registry.asset.php | 1 -
.../build/wc-blocks-registry.js | 1 -
.../build/wc-blocks-rtl.css | 2 -
.../build/wc-blocks-shared-context.asset.php | 1 -
.../build/wc-blocks-shared-context.js | 1 -
.../build/wc-blocks-shared-hocs.asset.php | 1 -
.../build/wc-blocks-shared-hocs.js | 1 -
.../build/wc-blocks-style.asset.php | 1 -
.../build/wc-blocks-style.js.LICENSE.txt | 5 -
.../build/wc-blocks-vendors.asset.php | 1 -
.../build/wc-blocks-vendors.js | 7 -
.../build/wc-blocks.asset.php | 1 -
.../woocommerce-blocks/build/wc-blocks.css | 2 -
.../woocommerce-blocks/build/wc-blocks.js | 1 -
.../build/wc-interactivity-dropdown.asset.php | 1 -
.../build/wc-interactivity-dropdown.js | 1 -
.../build/wc-interactivity.asset.php | 1 -
.../build/wc-interactivity.js | 1 -
.../build/wc-payment-method-bacs.asset.php | 1 -
.../build/wc-payment-method-bacs.js | 1 -
.../build/wc-payment-method-cheque.asset.php | 1 -
.../build/wc-payment-method-cheque.js | 1 -
.../build/wc-payment-method-cod.asset.php | 1 -
.../build/wc-payment-method-cod.js | 1 -
.../build/wc-payment-method-paypal.asset.php | 1 -
.../build/wc-payment-method-paypal.js | 1 -
.../build/wc-settings.asset.php | 1 -
.../woocommerce-blocks/build/wc-settings.js | 1 -
...-shipping-method-pickup-location.asset.php | 1 -
.../wc-shipping-method-pickup-location.js | 250 -
.../woocommerce-blocks/checkstyle.xml | 4167 -------------
.../packages/woocommerce-blocks/global.d.ts | 3 -
.../woocommerce-blocks/images/block-error.svg | 1 -
.../product-image-gallery.svg | 9 -
.../block-placeholders/product-reviews.svg | 27 -
.../blocks/mini-cart/cart-drawer-rtl.svg | 35 -
.../images/blocks/mini-cart/cart-drawer.svg | 33 -
...each-landscape-sea-coast-nature-person.jpg | Bin 111873 -> 0 bytes
.../pattern-placeholders/crafting-pots.png | Bin 152306 -> 0 bytes
...esk-table-wood-chair-floor-home-square.png | Bin 27511 -> 0 bytes
.../pattern-placeholders/dining-room.png | Bin 427924 -> 0 bytes
.../dish-food-baking-dessert-bread-bakery.png | Bin 283535 -> 0 bytes
.../dish-meal-food-breakfast-dessert-eat.png | Bin 330436 -> 0 bytes
...oration-fireplace-property-living-room.png | Bin 202287 -> 0 bytes
.../fresh-lettuce-washed.png | Bin 76694 -> 0 bytes
.../fresh-organic-tomatoes.png | Bin 68487 -> 0 bytes
...and-guitar-finger-tshirt-clothing-rack.png | Bin 151576 -> 0 bytes
.../pattern-placeholders/hand-made-pots.png | Bin 125337 -> 0 bytes
...ther-guitar-typewriter-red-gadget-sofa.png | Bin 208047 -> 0 bytes
.../pattern-placeholders/living-room-sofa.png | Bin 470461 -> 0 bytes
.../pattern-placeholders/living-room.png | Bin 344024 -> 0 bytes
...-person-winter-photography-statue-coat.png | Bin 217586 -> 0 bytes
...echnology-play-equipment-studio-gadget.png | Bin 156300 -> 0 bytes
.../images/pattern-placeholders/office.png | Bin 396743 -> 0 bytes
...-fashion-clothing-outerwear-wool-scarf.png | Bin 297113 -> 0 bytes
.../person-winter-blur-wood-girl-woman.png | Bin 241084 -> 0 bytes
.../pattern-placeholders/plant-in-vase.jpg | Bin 149650 -> 0 bytes
.../russet-organic-potatoes.png | Bin 104650 -> 0 bytes
.../pattern-placeholders/shop-jeans.png | Bin 236673 -> 0 bytes
.../sweet-organic-lemons.png | Bin 86560 -> 0 bytes
...ant-celebration-food-chocolate-cupcake.png | Bin 92563 -> 0 bytes
...home-living-room-furniture-room-square.png | Bin 24798 -> 0 bytes
...-floor-home-living-room-furniture-room.png | Bin 150389 -> 0 bytes
...sphere-living-room-furniture-square-lg.png | Bin 52414 -> 0 bytes
...tmosphere-living-room-furniture-square.png | Bin 28405 -> 0 bytes
...white-chair-floor-shelf-lamp-square-lg.png | Bin 51585 -> 0 bytes
...floor-living-room-furniture-horizontal.png | Bin 285990 -> 0 bytes
...r-floor-living-room-furniture-vertical.png | Bin 141842 -> 0 bytes
...stick-gadget-console-games-playstation.png | Bin 164041 -> 0 bytes
...amera-photography-vintage-photographer.png | Bin 99614 -> 0 bytes
...home-wall-decoration-shelf-living-room.png | Bin 652093 -> 0 bytes
.../images/payment-methods/alipay.svg | 10 -
.../images/payment-methods/amex.svg | 6 -
.../images/payment-methods/bancontact.svg | 8 -
.../images/payment-methods/diners.svg | 8 -
.../images/payment-methods/discover.svg | 7 -
.../images/payment-methods/eps.svg | 27 -
.../images/payment-methods/giropay.svg | 5 -
.../images/payment-methods/ideal.svg | 7 -
.../images/payment-methods/jcb.svg | 23 -
.../images/payment-methods/laser.svg | 33 -
.../images/payment-methods/maestro.svg | 9 -
.../images/payment-methods/mastercard.svg | 9 -
.../images/payment-methods/multibanco.svg | 44 -
.../images/payment-methods/p24.svg | 5 -
.../images/payment-methods/sepa.svg | 7 -
.../images/payment-methods/sofort.svg | 4 -
.../images/payment-methods/unionpay.svg | 5 -
.../images/payment-methods/visa.svg | 7 -
.../images/payment-methods/wechat.svg | 14 -
.../images/previews/beanie.jpg | Bin 36039 -> 0 bytes
.../images/previews/cap.jpg | Bin 37675 -> 0 bytes
.../images/previews/collection.jpg | Bin 122346 -> 0 bytes
.../images/previews/hoodie-with-logo.jpg | Bin 46969 -> 0 bytes
.../images/previews/hoodie-with-pocket.jpg | Bin 43268 -> 0 bytes
.../images/previews/hoodie-with-zipper.jpg | Bin 56609 -> 0 bytes
.../images/previews/long-sleeve-tee.jpg | Bin 51118 -> 0 bytes
.../images/previews/pennant.jpg | Bin 43014 -> 0 bytes
.../images/previews/polo.jpg | Bin 44409 -> 0 bytes
.../images/previews/tshirt.jpg | Bin 41155 -> 0 bytes
.../template-placeholders/archive-product.svg | 1 -
.../images/template-placeholders/fallback.svg | 3 -
.../template-placeholders/single-product.svg | 1 -
.../blocks-registry/get-registered-blocks.ts | 27 -
.../checkout/blocks-registry/index.ts | 3 -
.../checkout/blocks-registry/inserter.png | Bin 39011 -> 0 bytes
.../register-checkout-block.ts | 53 -
.../blocks-registry/registered-blocks.ts | 8 -
.../checkout/blocks-registry/test/index.js | 93 -
.../checkout/blocks-registry/types.ts | 56 -
.../checkout/blocks-registry/utils.ts | 122 -
.../components/checkbox-control/index.tsx | 80 -
.../stories/index.stories.tsx | 25 -
.../components/checkbox-control/style.scss | 138 -
.../components/discounts-meta/index.js | 36 -
.../components/error-boundary/index.js | 43 -
.../packages/checkout/components/index.ts | 14 -
.../checkout/components/label/index.ts | 6 -
.../order-local-pickup-packages/index.tsx | 56 -
.../checkout/components/order-meta/index.js | 36 -
.../order-shipping-packages/index.js | 51 -
.../checkout/components/text-input/index.tsx | 2 -
.../validation-input-error/index.tsx | 1 -
.../checkout/filter-registry/index.ts | 294 -
.../checkout/filter-registry/test/admin.js | 55 -
.../checkout/filter-registry/test/index.js | 119 -
.../packages/checkout/index.js | 6 -
.../packages/checkout/slot/index.js | 120 -
.../packages/checkout/style.scss | 1 -
.../checkout/utils/extension-cart-update.ts | 23 -
.../packages/checkout/utils/index.js | 2 -
.../get-validity-message-for-input.ts | 37 -
.../checkout/utils/validation/index.ts | 3 -
.../checkout/utils/validation/is-postcode.ts | 38 -
.../checkout/utils/validation/must-contain.ts | 26 -
.../checkout/utils/validation/test/index.tsx | 66 -
.../utils/validation/test/is-postcode.ts | 199 -
.../packages/components/button/index.ts | 6 -
.../components/checkbox-list/index.tsx | 185 -
.../checkbox-list/stories/index.stories.tsx | 118 -
.../components/checkbox-list/style.scss | 29 -
.../packages/components/chip/chip.tsx | 79 -
.../packages/components/chip/index.ts | 2 -
.../components/chip/removable-chip.tsx | 108 -
.../components/chip/stories/chip.stories.tsx | 38 -
.../chip/stories/removable-chip.stories.tsx | 33 -
.../packages/components/chip/style.scss | 84 -
.../chip/test/__snapshots__/index.js.snap | 312 -
.../packages/components/chip/test/index.js | 109 -
.../packages/components/form-step/index.tsx | 100 -
.../form-step/stories/index.stories.tsx | 126 -
.../packages/components/form-step/style.scss | 127 -
.../test/__snapshots__/index.js.snap | 262 -
.../components/form-step/test/index.js | 100 -
.../formatted-monetary-amount/index.tsx | 116 -
.../stories/index.stories.tsx | 121 -
.../formatted-monetary-amount/style.scss | 3 -
.../packages/components/index.ts | 28 -
.../packages/components/label/index.tsx | 62 -
.../label/stories/index.stories.tsx | 51 -
.../label/test/__snapshots__/index.js.snap | 62 -
.../packages/components/label/test/index.js | 83 -
.../packages/components/panel/index.tsx | 62 -
.../packages/components/panel/style.scss | 76 -
.../radio-control-accordion/index.tsx | 88 -
.../stories/index.stories.tsx | 104 -
.../components/radio-control/index.tsx | 56 -
.../radio-control/option-layout.tsx | 57 -
.../components/radio-control/option.tsx | 63 -
.../radio-control/stories/index.stories.tsx | 90 -
.../components/radio-control/style.scss | 128 -
.../components/radio-control/types.ts | 43 -
.../packages/components/sort-select/index.tsx | 105 -
.../sort-select/stories/index.stories.tsx | 132 -
.../components/sort-select/style.scss | 14 -
.../packages/components/spinner/index.tsx | 10 -
.../spinner/stories/index.stories.tsx | 20 -
.../packages/components/spinner/style.scss | 27 -
.../components/store-notice/index.tsx | 29 -
.../store-notices-container/index.tsx | 107 -
.../snackbar-notices.tsx | 38 -
.../store-notices-container/store-notices.tsx | 170 -
.../store-notices-container/style.scss | 80 -
.../store-notices-container/test/index.tsx | 218 -
.../store-notices-container/types.ts | 11 -
.../text-input/stories/text-input.stories.tsx | 179 -
.../stories/validated-text-input.stories.tsx | 249 -
.../packages/components/text-input/style.scss | 128 -
.../text-input/test/validated-text-input.tsx | 307 -
.../components/text-input/text-input.tsx | 117 -
.../packages/components/text-input/types.ts | 43 -
.../text-input/validated-text-input.tsx | 268 -
.../packages/components/textarea/index.tsx | 38 -
.../textarea/stories/index.stories.tsx | 77 -
.../packages/components/textarea/style.scss | 30 -
.../packages/components/title/index.tsx | 40 -
.../title/stories/index.stories.tsx | 59 -
.../packages/components/title/style.scss | 22 -
.../components/totals-wrapper/docs/docs.mdx | 15 -
.../components/totals-wrapper/index.tsx | 40 -
.../totals-wrapper/stories/index.stories.tsx | 52 -
.../components/totals-wrapper/style.scss | 41 -
.../packages/components/totals/fees/index.tsx | 72 -
.../totals/fees/stories/index.stories.tsx | 68 -
.../packages/components/totals/index.js | 4 -
.../packages/components/totals/item/index.tsx | 70 -
.../totals/item/stories/index.stories.tsx | 32 -
.../components/totals/item/style.scss | 20 -
.../components/totals/subtotal/index.tsx | 48 -
.../totals/subtotal/stories/index.stories.tsx | 44 -
.../components/totals/taxes/index.tsx | 88 -
.../totals/taxes/stories/index.stories.tsx | 40 -
.../validation-input-error/index.tsx | 46 -
.../stories/index.stories.tsx | 54 -
.../validation-input-error/style.scss | 19 -
.../dropdown/index.ts | 95 -
.../packages/prices/index.js | 1 -
.../packages/prices/utils/index.js | 1 -
.../packages/prices/utils/price.ts | 203 -
.../packages/prices/utils/test/price.js | 67 -
.../patches/wordpress-components+14.2.0.patch | 44 -
.../woocommerce-blocks/patterns/banner.php | 56 -
.../patterns/discount-banner-with-image.php | 53 -
.../patterns/discount-banner.php | 41 -
.../featured-category-cover-image.php | 43 -
.../patterns/featured-category-focus.php | 35 -
.../patterns/featured-category-triple.php | 84 -
.../featured-products-fresh-and-tasty.php | 148 -
.../woocommerce-blocks/patterns/filters.php | 67 -
.../patterns/footer-large-dark.php | 92 -
.../patterns/footer-large.php | 81 -
.../patterns/footer-simple-dark.php | 66 -
.../patterns/footer-simple-menu.php | 47 -
.../patterns/footer-simple.php | 66 -
.../patterns/footer-with-2-menus-dark.php | 83 -
.../patterns/footer-with-2-menus.php | 82 -
.../patterns/footer-with-3-menus.php | 77 -
.../patterns/header-centered-pattern.php | 52 -
.../patterns/header-essential-dark.php | 26 -
.../patterns/header-essential.php | 31 -
.../patterns/header-large-dark.php | 32 -
.../patterns/header-large.php | 56 -
.../patterns/header-minimal.php | 26 -
.../patterns/hero-product-3-split.php | 111 -
.../patterns/hero-product-chessboard.php | 120 -
.../patterns/hero-product-split.php | 35 -
.../patterns/just-arrived-full-hero.php | 44 -
.../patterns/no-products-found.php | 13 -
.../patterns/product-collection-3-columns.php | 32 -
.../patterns/product-collection-4-columns.php | 32 -
.../patterns/product-collection-5-columns.php | 28 -
.../patterns/product-collection-banner.php | 56 -
...collection-featured-products-5-columns.php | 45 -
.../patterns/product-collection-full-grid.php | 34 -
.../patterns/product-collection-grid.php | 32 -
.../patterns/product-collection-rows.php | 42 -
.../product-collection-simple-grid.php | 30 -
...roduct-collections-featured-collection.php | 55 -
...oduct-collections-featured-collections.php | 91 -
.../product-collections-newest-arrivals.php | 59 -
.../patterns/product-details-listing.php | 33 -
.../patterns/product-details-pattern.php | 147 -
.../patterns/product-featured-2-columns.php | 63 -
.../patterns/product-hero-2-col-2-row.php | 140 -
.../patterns/product-hero.php | 36 -
...t-listing-with-gallery-and-description.php | 121 -
.../product-query-4-column-product-row.php | 37 -
...duct-query-large-image-product-gallery.php | 31 -
.../product-query-minimal-product-list.php | 39 -
.../product-query-product-gallery.php | 30 -
...uct-query-product-list-with-1-1-images.php | 43 -
...uct-list-with-full-product-description.php | 65 -
.../patterns/product-search-form.php | 9 -
.../patterns/related-products.php | 37 -
.../patterns/shop-by-price.php | 139 -
.../small-discount-banner-with-image.php | 45 -
.../social-follow-us-in-social-media.php | 84 -
.../store-info-alt-image-and-text.php | 97 -
.../patterns/testimonials-3-columns.php | 78 -
.../patterns/testimonials-single.php | 42 -
.../packages/woocommerce-blocks/readme.txt | 3174 ----------
.../src/AI/Configuration.php | 117 -
.../woocommerce-blocks/src/AI/Connection.php | 150 -
.../woocommerce-blocks/src/Assets.php | 95 -
.../woocommerce-blocks/src/Assets/Api.php | 327 -
.../src/Assets/AssetDataRegistry.php | 452 --
.../src/AssetsController.php | 363 --
.../woocommerce-blocks/src/BlockPatterns.php | 395 --
.../src/BlockTemplatesController.php | 780 ---
.../src/BlockTypes/AbstractBlock.php | 484 --
.../src/BlockTypes/AbstractDynamicBlock.php | 92 -
.../src/BlockTypes/AbstractInnerBlock.php | 65 -
.../src/BlockTypes/AbstractProductGrid.php | 699 ---
.../src/BlockTypes/ActiveFilters.php | 14 -
.../src/BlockTypes/AddToCartForm.php | 200 -
.../src/BlockTypes/AllProducts.php | 46 -
.../src/BlockTypes/AllReviews.php | 43 -
.../src/BlockTypes/AtomicBlock.php | 47 -
.../src/BlockTypes/AttributeFilter.php | 37 -
.../src/BlockTypes/Breadcrumbs.php | 57 -
.../src/BlockTypes/Cart.php | 305 -
.../CartAcceptedPaymentMethodsBlock.php | 14 -
.../src/BlockTypes/CartCrossSellsBlock.php | 14 -
.../CartCrossSellsProductsBlock.php | 14 -
.../BlockTypes/CartExpressPaymentBlock.php | 14 -
.../src/BlockTypes/CartItemsBlock.php | 14 -
.../src/BlockTypes/CartLineItemsBlock.php | 14 -
.../src/BlockTypes/CartOrderSummaryBlock.php | 14 -
.../CartOrderSummaryCouponFormBlock.php | 14 -
.../CartOrderSummaryDiscountBlock.php | 14 -
.../BlockTypes/CartOrderSummaryFeeBlock.php | 14 -
.../CartOrderSummaryHeadingBlock.php | 14 -
.../CartOrderSummaryShippingBlock.php | 14 -
.../CartOrderSummarySubtotalBlock.php | 14 -
.../BlockTypes/CartOrderSummaryTaxesBlock.php | 14 -
.../src/BlockTypes/CartTotalsBlock.php | 14 -
.../src/BlockTypes/CatalogSorting.php | 57 -
.../src/BlockTypes/Checkout.php | 504 --
.../src/BlockTypes/CheckoutActionsBlock.php | 14 -
.../CheckoutBillingAddressBlock.php | 14 -
.../CheckoutContactInformationBlock.php | 14 -
.../CheckoutExpressPaymentBlock.php | 14 -
.../src/BlockTypes/CheckoutFieldsBlock.php | 14 -
.../src/BlockTypes/CheckoutOrderNoteBlock.php | 14 -
.../BlockTypes/CheckoutOrderSummaryBlock.php | 14 -
.../CheckoutOrderSummaryCartItemsBlock.php | 14 -
.../CheckoutOrderSummaryCouponFormBlock.php | 14 -
.../CheckoutOrderSummaryDiscountBlock.php | 14 -
.../CheckoutOrderSummaryFeeBlock.php | 14 -
.../CheckoutOrderSummaryShippingBlock.php | 14 -
.../CheckoutOrderSummarySubtotalBlock.php | 14 -
.../CheckoutOrderSummaryTaxesBlock.php | 14 -
.../src/BlockTypes/CheckoutPaymentBlock.php | 14 -
.../BlockTypes/CheckoutPickupOptionsBlock.php | 14 -
.../CheckoutShippingAddressBlock.php | 14 -
.../CheckoutShippingMethodBlock.php | 14 -
.../CheckoutShippingMethodsBlock.php | 14 -
.../src/BlockTypes/CheckoutTermsBlock.php | 14 -
.../src/BlockTypes/CheckoutTotalsBlock.php | 14 -
.../src/BlockTypes/ClassicShortcode.php | 127 -
.../src/BlockTypes/ClassicTemplate.php | 416 --
.../src/BlockTypes/CollectionFilters.php | 253 -
.../src/BlockTypes/CollectionPriceFilter.php | 159 -
.../src/BlockTypes/CollectionStockFilter.php | 172 -
.../src/BlockTypes/CustomerAccount.php | 120 -
.../src/BlockTypes/EmptyCartBlock.php | 14 -
.../BlockTypes/EmptyMiniCartContentsBlock.php | 14 -
.../src/BlockTypes/FeaturedCategory.php | 102 -
.../src/BlockTypes/FeaturedItem.php | 327 -
.../src/BlockTypes/FeaturedProduct.php | 103 -
.../src/BlockTypes/FilledCartBlock.php | 14 -
.../FilledMiniCartContentsBlock.php | 14 -
.../src/BlockTypes/FilterWrapper.php | 23 -
.../src/BlockTypes/HandpickedProducts.php | 61 -
.../src/BlockTypes/MiniCart.php | 590 --
.../BlockTypes/MiniCartCartButtonBlock.php | 14 -
.../MiniCartCheckoutButtonBlock.php | 14 -
.../src/BlockTypes/MiniCartContents.php | 169 -
.../src/BlockTypes/MiniCartFooterBlock.php | 14 -
.../src/BlockTypes/MiniCartItemsBlock.php | 14 -
.../BlockTypes/MiniCartProductsTableBlock.php | 14 -
.../MiniCartShoppingButtonBlock.php | 14 -
.../src/BlockTypes/MiniCartTitleBlock.php | 14 -
.../MiniCartTitleItemsCounterBlock.php | 14 -
.../BlockTypes/MiniCartTitleLabelBlock.php | 14 -
.../AbstractOrderConfirmationBlock.php | 301 -
.../AdditionalInformation.php | 52 -
.../OrderConfirmation/BillingAddress.php | 36 -
.../OrderConfirmation/BillingWrapper.php | 40 -
.../OrderConfirmation/Downloads.php | 161 -
.../OrderConfirmation/DownloadsWrapper.php | 88 -
.../OrderConfirmation/ShippingAddress.php | 59 -
.../OrderConfirmation/ShippingWrapper.php | 40 -
.../BlockTypes/OrderConfirmation/Status.php | 236 -
.../BlockTypes/OrderConfirmation/Summary.php | 54 -
.../BlockTypes/OrderConfirmation/Totals.php | 229 -
.../OrderConfirmation/TotalsWrapper.php | 40 -
.../src/BlockTypes/PageContentWrapper.php | 35 -
.../src/BlockTypes/PriceFilter.php | 17 -
.../src/BlockTypes/ProceedToCheckoutBlock.php | 25 -
.../src/BlockTypes/ProductAddToCart.php | 32 -
.../src/BlockTypes/ProductAverageRating.php | 103 -
.../src/BlockTypes/ProductBestSellers.php | 24 -
.../src/BlockTypes/ProductButton.php | 275 -
.../src/BlockTypes/ProductCategories.php | 406 --
.../src/BlockTypes/ProductCategory.php | 37 -
.../src/BlockTypes/ProductCollection.php | 1035 ----
.../BlockTypes/ProductCollectionNoResults.php | 150 -
.../src/BlockTypes/ProductDetails.php | 70 -
.../src/BlockTypes/ProductGallery.php | 164 -
.../BlockTypes/ProductGalleryLargeImage.php | 212 -
.../ProductGalleryLargeImageNextPrevious.php | 229 -
.../src/BlockTypes/ProductGalleryPager.php | 167 -
.../BlockTypes/ProductGalleryThumbnails.php | 183 -
.../src/BlockTypes/ProductImage.php | 238 -
.../src/BlockTypes/ProductImageGallery.php | 78 -
.../src/BlockTypes/ProductNew.php | 25 -
.../src/BlockTypes/ProductOnSale.php | 38 -
.../src/BlockTypes/ProductPrice.php | 108 -
.../src/BlockTypes/ProductQuery.php | 972 ---
.../src/BlockTypes/ProductRating.php | 215 -
.../src/BlockTypes/ProductRatingCounter.php | 209 -
.../src/BlockTypes/ProductRatingStars.php | 163 -
.../src/BlockTypes/ProductResultsCount.php | 53 -
.../src/BlockTypes/ProductReviews.php | 53 -
.../src/BlockTypes/ProductSKU.php | 82 -
.../src/BlockTypes/ProductSaleBadge.php | 123 -
.../src/BlockTypes/ProductSearch.php | 160 -
.../src/BlockTypes/ProductStockIndicator.php | 115 -
.../src/BlockTypes/ProductSummary.php | 54 -
.../src/BlockTypes/ProductTag.php | 70 -
.../src/BlockTypes/ProductTemplate.php | 134 -
.../src/BlockTypes/ProductTitle.php | 65 -
.../src/BlockTypes/ProductTopRated.php | 24 -
.../src/BlockTypes/ProductsByAttribute.php | 75 -
.../src/BlockTypes/RatingFilter.php | 34 -
.../src/BlockTypes/RelatedProducts.php | 176 -
.../src/BlockTypes/ReviewsByCategory.php | 43 -
.../src/BlockTypes/ReviewsByProduct.php | 43 -
.../src/BlockTypes/SingleProduct.php | 164 -
.../src/BlockTypes/StockFilter.php | 45 -
.../src/BlockTypes/StoreNotices.php | 80 -
.../src/BlockTypesController.php | 349 --
.../src/Domain/Bootstrap.php | 540 --
.../woocommerce-blocks/src/Domain/Package.php | 140 -
.../src/Domain/Services/CreateAccount.php | 71 -
.../src/Domain/Services/DraftOrders.php | 236 -
.../Services/Email/CustomerNewAccount.php | 174 -
.../src/Domain/Services/FeatureGating.php | 181 -
.../src/Domain/Services/GoogleAnalytics.php | 119 -
.../src/Domain/Services/Hydration.php | 97 -
.../src/Domain/Services/Notices.php | 104 -
.../OnboardingTasks/ReviewCheckoutTask.php | 119 -
.../OnboardingTasks/TasksController.php | 29 -
.../woocommerce-blocks/src/Images/Pexels.php | 97 -
.../src/InboxNotifications.php | 23 -
.../woocommerce-blocks/src/Installer.php | 132 -
.../src/Integrations/IntegrationInterface.php | 42 -
.../src/Integrations/IntegrationRegistry.php | 181 -
.../class-wc-interactivity-store.php | 56 -
.../Interactivity/client-side-navigation.php | 9 -
.../src/Interactivity/load.php | 4 -
.../src/Interactivity/scripts.php | 50 -
.../src/Interactivity/store.php | 19 -
.../src/InteractivityComponents/Dropdown.php | 85 -
.../woocommerce-blocks/src/Library.php | 44 -
.../woocommerce-blocks/src/Migration.php | 108 -
.../woocommerce-blocks/src/Options.php | 11 -
.../woocommerce-blocks/src/Package.php | 139 -
.../src/Patterns/PatternUpdater.php | 224 -
.../src/Patterns/PatternsHelper.php | 162 -
.../src/Patterns/ProductUpdater.php | 382 --
.../src/Patterns/dictionary.json | 640 --
.../woocommerce-blocks/src/Payments/Api.php | 181 -
.../AbstractPaymentMethodType.php | 124 -
.../Payments/Integrations/BankTransfer.php | 76 -
.../Payments/Integrations/CashOnDelivery.php | 101 -
.../src/Payments/Integrations/Cheque.php | 77 -
.../src/Payments/Integrations/PayPal.php | 100 -
.../src/Payments/PaymentMethodRegistry.php | 67 -
.../Payments/PaymentMethodTypeInterface.php | 44 -
.../src/Registry/AbstractDependencyType.php | 54 -
.../src/Registry/Container.php | 98 -
.../src/Registry/FactoryType.php | 21 -
.../src/Registry/SharedType.php | 32 -
.../src/Shipping/PickupLocation.php | 165 -
.../src/Shipping/ShippingController.php | 515 --
.../src/StoreApi/Authentication.php | 292 -
.../Exceptions/InvalidCartException.php | 74 -
.../InvalidStockLevelsInCartException.php | 73 -
.../Exceptions/NotPurchasableException.php | 9 -
.../Exceptions/OutOfStockException.php | 9 -
.../Exceptions/PartialOutOfStockException.php | 9 -
.../StoreApi/Exceptions/RouteException.php | 53 -
.../Exceptions/StockAvailabilityException.php | 72 -
.../Exceptions/TooManyInCartException.php | 9 -
.../src/StoreApi/Formatters.php | 47 -
.../StoreApi/Formatters/CurrencyFormatter.php | 51 -
.../StoreApi/Formatters/DefaultFormatter.php | 18 -
.../Formatters/FormatterInterface.php | 16 -
.../src/StoreApi/Formatters/HtmlFormatter.php | 28 -
.../StoreApi/Formatters/MoneyFormatter.php | 34 -
.../src/StoreApi/Legacy.php | 70 -
.../src/StoreApi/Payments/PaymentContext.php | 84 -
.../src/StoreApi/Payments/PaymentResult.php | 94 -
.../src/StoreApi/Routes/RouteInterface.php | 21 -
.../Routes/V1/AI/BusinessDescription.php | 89 -
.../src/StoreApi/Routes/V1/AI/Images.php | 118 -
.../src/StoreApi/Routes/V1/AI/Middleware.php | 50 -
.../src/StoreApi/Routes/V1/AI/Patterns.php | 94 -
.../src/StoreApi/Routes/V1/AI/Product.php | 111 -
.../src/StoreApi/Routes/V1/AI/Products.php | 141 -
.../StoreApi/Routes/V1/AbstractCartRoute.php | 345 --
.../src/StoreApi/Routes/V1/AbstractRoute.php | 330 -
.../StoreApi/Routes/V1/AbstractTermsRoute.php | 157 -
.../src/StoreApi/Routes/V1/Batch.php | 128 -
.../src/StoreApi/Routes/V1/Cart.php | 52 -
.../src/StoreApi/Routes/V1/CartAddItem.php | 126 -
.../StoreApi/Routes/V1/CartApplyCoupon.php | 72 -
.../src/StoreApi/Routes/V1/CartCoupons.php | 147 -
.../StoreApi/Routes/V1/CartCouponsByCode.php | 98 -
.../src/StoreApi/Routes/V1/CartExtensions.php | 74 -
.../src/StoreApi/Routes/V1/CartItems.php | 142 -
.../src/StoreApi/Routes/V1/CartItemsByKey.php | 146 -
.../StoreApi/Routes/V1/CartRemoveCoupon.php | 79 -
.../src/StoreApi/Routes/V1/CartRemoveItem.php | 87 -
.../Routes/V1/CartSelectShippingRate.php | 106 -
.../StoreApi/Routes/V1/CartUpdateCustomer.php | 269 -
.../src/StoreApi/Routes/V1/CartUpdateItem.php | 67 -
.../src/StoreApi/Routes/V1/Checkout.php | 707 ---
.../src/StoreApi/Routes/V1/CheckoutOrder.php | 266 -
.../src/StoreApi/Routes/V1/Order.php | 87 -
.../Routes/V1/ProductAttributeTerms.php | 76 -
.../StoreApi/Routes/V1/ProductAttributes.php | 66 -
.../Routes/V1/ProductAttributesById.php | 81 -
.../StoreApi/Routes/V1/ProductCategories.php | 57 -
.../Routes/V1/ProductCategoriesById.php | 79 -
.../Routes/V1/ProductCollectionData.php | 178 -
.../src/StoreApi/Routes/V1/ProductReviews.php | 231 -
.../src/StoreApi/Routes/V1/ProductTags.php | 50 -
.../src/StoreApi/Routes/V1/Products.php | 429 --
.../src/StoreApi/Routes/V1/ProductsById.php | 78 -
.../src/StoreApi/Routes/V1/ProductsBySlug.php | 117 -
.../src/StoreApi/RoutesController.php | 127 -
.../src/StoreApi/SchemaController.php | 84 -
.../src/StoreApi/Schemas/ExtendSchema.php | 349 --
.../V1/AI/BusinessDescriptionSchema.php | 47 -
.../StoreApi/Schemas/V1/AI/ImagesSchema.php | 45 -
.../StoreApi/Schemas/V1/AI/PatternsSchema.php | 47 -
.../StoreApi/Schemas/V1/AI/ProductSchema.php | 47 -
.../StoreApi/Schemas/V1/AI/ProductsSchema.php | 48 -
.../Schemas/V1/AbstractAddressSchema.php | 163 -
.../StoreApi/Schemas/V1/AbstractSchema.php | 404 --
.../src/StoreApi/Schemas/V1/BatchSchema.php | 30 -
.../Schemas/V1/BillingAddressSchema.php | 130 -
.../StoreApi/Schemas/V1/CartCouponSchema.php | 108 -
.../Schemas/V1/CartExtensionsSchema.php | 85 -
.../src/StoreApi/Schemas/V1/CartFeeSchema.php | 85 -
.../StoreApi/Schemas/V1/CartItemSchema.php | 130 -
.../src/StoreApi/Schemas/V1/CartSchema.php | 448 --
.../Schemas/V1/CartShippingRateSchema.php | 354 --
.../Schemas/V1/CheckoutOrderSchema.php | 37 -
.../StoreApi/Schemas/V1/CheckoutSchema.php | 233 -
.../src/StoreApi/Schemas/V1/ErrorSchema.php | 57 -
.../Schemas/V1/ImageAttachmentSchema.php | 99 -
.../src/StoreApi/Schemas/V1/ItemSchema.php | 316 -
.../StoreApi/Schemas/V1/OrderCouponSchema.php | 86 -
.../StoreApi/Schemas/V1/OrderFeeSchema.php | 88 -
.../StoreApi/Schemas/V1/OrderItemSchema.php | 78 -
.../src/StoreApi/Schemas/V1/OrderSchema.php | 391 --
.../Schemas/V1/ProductAttributeSchema.php | 91 -
.../Schemas/V1/ProductCategorySchema.php | 124 -
.../V1/ProductCollectionDataSchema.php | 143 -
.../Schemas/V1/ProductReviewSchema.php | 179 -
.../src/StoreApi/Schemas/V1/ProductSchema.php | 863 ---
.../Schemas/V1/ShippingAddressSchema.php | 72 -
.../src/StoreApi/Schemas/V1/TermSchema.php | 84 -
.../src/StoreApi/SessionHandler.php | 113 -
.../src/StoreApi/StoreApi.php | 109 -
.../src/StoreApi/Utilities/ArrayUtils.php | 36 -
.../src/StoreApi/Utilities/CartController.php | 1365 -----
.../src/StoreApi/Utilities/CheckoutTrait.php | 183 -
.../StoreApi/Utilities/DraftOrderTrait.php | 70 -
.../src/StoreApi/Utilities/JsonWebToken.php | 196 -
.../StoreApi/Utilities/LocalPickupUtils.php | 44 -
.../src/StoreApi/Utilities/NoticeHandler.php | 72 -
.../Utilities/OrderAuthorizationTrait.php | 62 -
.../StoreApi/Utilities/OrderController.php | 742 ---
.../src/StoreApi/Utilities/Pagination.php | 71 -
.../StoreApi/Utilities/ProductItemTrait.php | 85 -
.../src/StoreApi/Utilities/ProductQuery.php | 512 --
.../Utilities/ProductQueryFilters.php | 485 --
.../src/StoreApi/Utilities/QuantityLimits.php | 212 -
.../src/StoreApi/Utilities/RateLimits.php | 247 -
.../StoreApi/Utilities/ValidationUtils.php | 61 -
.../src/StoreApi/deprecated.php | 77 -
.../src/StoreApi/functions.php | 87 -
.../src/Templates/AbstractPageTemplate.php | 87 -
.../AbstractTemplateCompatibility.php | 201 -
.../ArchiveProductTemplatesCompatibility.php | 423 --
.../src/Templates/CartTemplate.php | 63 -
.../src/Templates/CheckoutHeaderTemplate.php | 13 -
.../src/Templates/CheckoutTemplate.php | 63 -
.../ClassicTemplatesCompatibility.php | 81 -
.../src/Templates/MiniCartTemplate.php | 13 -
.../Templates/OrderConfirmationTemplate.php | 63 -
.../Templates/ProductAttributeTemplate.php | 40 -
.../ProductSearchResultsTemplate.php | 38 -
.../src/Templates/SingleProductTemplate.php | 120 -
.../SingleProductTemplateCompatibility.php | 496 --
.../src/Utils/BlockTemplateMigrationUtils.php | 129 -
.../src/Utils/BlockTemplateUtils.php | 796 ---
.../src/Utils/BlocksWpQuery.php | 71 -
.../src/Utils/CartCheckoutUtils.php | 108 -
.../src/Utils/MiniCartUtils.php | 38 -
.../src/Utils/ProductCollectionUtils.php | 34 -
.../src/Utils/ProductGalleryUtils.php | 147 -
.../src/Utils/StyleAttributesUtils.php | 766 ---
.../woocommerce-blocks/src/Utils/Utils.php | 27 -
.../emails/customer-new-account-blocks.php | 44 -
.../plain/customer-new-account-blocks.php | 45 -
.../templates/notices/error.php | 50 -
.../templates/notices/notice.php | 37 -
.../templates/notices/success.php | 29 -
.../templates/parts/checkout-header.html | 9 -
.../templates/parts/mini-cart.html | 49 -
.../templates/parts/product-gallery.html | 29 -
.../templates/templates/archive-product.html | 5 -
.../templates/blockified/archive-product.html | 42 -
.../blockified/order-confirmation.html | 41 -
.../templates/blockified/page-cart.html | 13 -
.../templates/blockified/page-checkout.html | 11 -
.../blockified/product-search-results.html | 41 -
.../templates/blockified/single-product.html | 52 -
.../taxonomy-product_attribute.html | 49 -
.../blockified/taxonomy-product_cat.html | 49 -
.../blockified/taxonomy-product_tag.html | 46 -
.../templates/order-confirmation.html | 41 -
.../templates/templates/page-cart.html | 13 -
.../templates/templates/page-checkout.html | 11 -
.../templates/product-search-results.html | 7 -
.../templates/templates/single-product.html | 5 -
.../templates/taxonomy-product_attribute.html | 5 -
.../templates/taxonomy-product_cat.html | 5 -
.../templates/taxonomy-product_tag.html | 5 -
.../woocommerce-blocks/vendor/autoload.php | 25 -
.../vendor/autoload_packages.php | 13 -
.../jetpack-a8c-mc-stats/LICENSE.txt | 357 --
.../src/class-a8c-mc-stats.php | 181 -
.../automattic/jetpack-admin-ui/LICENSE.txt | 357 --
.../jetpack-admin-ui/src/class-admin-menu.php | 207 -
.../automattic/jetpack-autoloader/LICENSE.txt | 357 --
.../src/AutoloadFileWriter.php | 99 -
.../src/AutoloadGenerator.php | 403 --
.../src/AutoloadProcessor.php | 175 -
.../src/CustomAutoloaderPlugin.php | 188 -
.../src/ManifestGenerator.php | 115 -
.../jetpack-autoloader/src/autoload.php | 5 -
.../src/class-autoloader-handler.php | 139 -
.../src/class-autoloader-locator.php | 82 -
.../src/class-autoloader.php | 82 -
.../src/class-container.php | 142 -
.../src/class-hook-manager.php | 68 -
.../src/class-latest-autoloader-guard.php | 78 -
.../src/class-manifest-reader.php | 91 -
.../src/class-path-processor.php | 186 -
.../src/class-php-autoloader.php | 85 -
.../src/class-plugin-locator.php | 145 -
.../src/class-plugins-handler.php | 156 -
.../src/class-shutdown-handler.php | 84 -
.../src/class-version-loader.php | 156 -
.../src/class-version-selector.php | 61 -
.../automattic/jetpack-config/LICENSE.txt | 357 --
.../jetpack-config/src/class-config.php | 454 --
.../automattic/jetpack-connection/LICENSE.txt | 357 --
.../dist/tracks-ajax.asset.php | 1 -
.../jetpack-connection/dist/tracks-ajax.js | 1 -
.../dist/tracks-callables.asset.php | 1 -
.../dist/tracks-callables.js | 1 -
.../legacy/class-jetpack-ixr-client.php | 180 -
.../class-jetpack-ixr-clientmulticall.php | 74 -
.../legacy/class-jetpack-options.php | 694 ---
.../legacy/class-jetpack-signature.php | 409 --
.../legacy/class-jetpack-tracks-client.php | 230 -
.../legacy/class-jetpack-tracks-event.php | 188 -
.../legacy/class-jetpack-xmlrpc-server.php | 877 ---
.../jetpack-connection/src/class-client.php | 497 --
.../src/class-connection-notice.php | 243 -
.../src/class-error-handler.php | 775 ---
.../src/class-heartbeat.php | 252 -
.../src/class-initial-state.php | 61 -
.../jetpack-connection/src/class-manager.php | 2576 --------
.../src/class-nonce-handler.php | 212 -
.../src/class-package-version-tracker.php | 111 -
.../src/class-package-version.php | 30 -
.../src/class-plugin-storage.php | 268 -
.../jetpack-connection/src/class-plugin.php | 122 -
.../src/class-rest-authentication.php | 220 -
.../src/class-rest-connector.php | 850 ---
.../jetpack-connection/src/class-secrets.php | 281 -
.../src/class-server-sandbox.php | 243 -
.../src/class-terms-of-service.php | 111 -
.../src/class-tokens-locks.php | 76 -
.../jetpack-connection/src/class-tokens.php | 687 ---
.../jetpack-connection/src/class-tracking.php | 318 -
.../jetpack-connection/src/class-urls.php | 192 -
.../jetpack-connection/src/class-utils.php | 86 -
.../jetpack-connection/src/class-webhooks.php | 211 -
.../src/class-xmlrpc-async-call.php | 105 -
.../src/class-xmlrpc-connector.php | 83 -
.../src/interface-manager.php | 17 -
.../src/webhooks/class-authorize-redirect.php | 202 -
.../automattic/jetpack-constants/LICENSE.txt | 357 --
.../jetpack-constants/src/class-constants.php | 124 -
.../automattic/jetpack-redirect/LICENSE.txt | 357 --
.../jetpack-redirect/src/class-redirect.php | 79 -
.../automattic/jetpack-roles/LICENSE.txt | 357 --
.../jetpack-roles/src/class-roles.php | 81 -
.../automattic/jetpack-status/LICENSE.txt | 357 --
.../jetpack-status/src/class-cache.php | 54 -
.../jetpack-status/src/class-cookiestate.php | 103 -
.../jetpack-status/src/class-errors.php | 43 -
.../jetpack-status/src/class-files.php | 54 -
.../jetpack-status/src/class-host.php | 137 -
.../jetpack-status/src/class-modules.php | 600 --
.../jetpack-status/src/class-paths.php | 28 -
.../jetpack-status/src/class-status.php | 414 --
.../jetpack-status/src/class-visitor.php | 43 -
.../vendor/composer/ClassLoader.php | 579 --
.../vendor/composer/InstalledVersions.php | 359 --
.../vendor/composer/LICENSE | 21 -
.../vendor/composer/autoload_classmap.php | 59 -
.../vendor/composer/autoload_files.php | 11 -
.../vendor/composer/autoload_namespaces.php | 9 -
.../vendor/composer/autoload_psr4.php | 13 -
.../vendor/composer/autoload_real.php | 48 -
.../vendor/composer/autoload_static.php | 108 -
.../vendor/composer/installed.json | 658 --
.../vendor/composer/installed.php | 125 -
.../vendor/composer/installers/LICENSE | 19 -
.../composer/installers/phpstan.neon.dist | 10 -
.../src/Composer/Installers/AglInstaller.php | 21 -
.../Composer/Installers/AimeosInstaller.php | 9 -
.../Installers/AnnotateCmsInstaller.php | 11 -
.../Composer/Installers/AsgardInstaller.php | 49 -
.../Composer/Installers/AttogramInstaller.php | 9 -
.../src/Composer/Installers/BaseInstaller.php | 137 -
.../Composer/Installers/BitrixInstaller.php | 126 -
.../Composer/Installers/BonefishInstaller.php | 9 -
.../Composer/Installers/CakePHPInstaller.php | 66 -
.../src/Composer/Installers/ChefInstaller.php | 11 -
.../Composer/Installers/CiviCrmInstaller.php | 9 -
.../Installers/ClanCatsFrameworkInstaller.php | 10 -
.../Composer/Installers/CockpitInstaller.php | 32 -
.../Installers/CodeIgniterInstaller.php | 11 -
.../Installers/Concrete5Installer.php | 13 -
.../Composer/Installers/CraftInstaller.php | 35 -
.../Composer/Installers/CroogoInstaller.php | 21 -
.../Composer/Installers/DecibelInstaller.php | 10 -
.../Composer/Installers/DframeInstaller.php | 10 -
.../Composer/Installers/DokuWikiInstaller.php | 50 -
.../Composer/Installers/DolibarrInstaller.php | 16 -
.../Composer/Installers/DrupalInstaller.php | 22 -
.../src/Composer/Installers/ElggInstaller.php | 9 -
.../Composer/Installers/EliasisInstaller.php | 12 -
.../Installers/ExpressionEngineInstaller.php | 29 -
.../Installers/EzPlatformInstaller.php | 10 -
.../src/Composer/Installers/FuelInstaller.php | 11 -
.../Composer/Installers/FuelphpInstaller.php | 9 -
.../src/Composer/Installers/GravInstaller.php | 30 -
.../Composer/Installers/HuradInstaller.php | 25 -
.../Composer/Installers/ImageCMSInstaller.php | 11 -
.../src/Composer/Installers/Installer.php | 298 -
.../src/Composer/Installers/ItopInstaller.php | 9 -
.../Composer/Installers/JoomlaInstaller.php | 15 -
.../Composer/Installers/KanboardInstaller.php | 18 -
.../Composer/Installers/KirbyInstaller.php | 11 -
.../Composer/Installers/KnownInstaller.php | 11 -
.../Composer/Installers/KodiCMSInstaller.php | 10 -
.../Composer/Installers/KohanaInstaller.php | 9 -
.../LanManagementSystemInstaller.php | 27 -
.../Composer/Installers/LaravelInstaller.php | 9 -
.../Composer/Installers/LavaLiteInstaller.php | 10 -
.../Composer/Installers/LithiumInstaller.php | 10 -
.../Installers/MODULEWorkInstaller.php | 9 -
.../Composer/Installers/MODXEvoInstaller.php | 16 -
.../Composer/Installers/MagentoInstaller.php | 11 -
.../Composer/Installers/MajimaInstaller.php | 37 -
.../src/Composer/Installers/MakoInstaller.php | 9 -
.../Composer/Installers/MantisBTInstaller.php | 23 -
.../Composer/Installers/MauticInstaller.php | 48 -
.../src/Composer/Installers/MayaInstaller.php | 33 -
.../Installers/MediaWikiInstaller.php | 51 -
.../Composer/Installers/MiaoxingInstaller.php | 10 -
.../Installers/MicroweberInstaller.php | 119 -
.../src/Composer/Installers/ModxInstaller.php | 12 -
.../Composer/Installers/MoodleInstaller.php | 59 -
.../Composer/Installers/OctoberInstaller.php | 48 -
.../Composer/Installers/OntoWikiInstaller.php | 24 -
.../Composer/Installers/OsclassInstaller.php | 14 -
.../src/Composer/Installers/OxidInstaller.php | 59 -
.../src/Composer/Installers/PPIInstaller.php | 9 -
.../Composer/Installers/PantheonInstaller.php | 12 -
.../Composer/Installers/PhiftyInstaller.php | 11 -
.../Composer/Installers/PhpBBInstaller.php | 11 -
.../Composer/Installers/PimcoreInstaller.php | 21 -
.../Composer/Installers/PiwikInstaller.php | 32 -
.../Installers/PlentymarketsInstaller.php | 29 -
.../src/Composer/Installers/Plugin.php | 27 -
.../Composer/Installers/PortoInstaller.php | 9 -
.../Installers/PrestashopInstaller.php | 10 -
.../Installers/ProcessWireInstaller.php | 22 -
.../Composer/Installers/PuppetInstaller.php | 11 -
.../Composer/Installers/PxcmsInstaller.php | 63 -
.../Composer/Installers/RadPHPInstaller.php | 24 -
.../Composer/Installers/ReIndexInstaller.php | 10 -
.../Composer/Installers/Redaxo5Installer.php | 10 -
.../Composer/Installers/RedaxoInstaller.php | 10 -
.../Installers/RoundcubeInstaller.php | 22 -
.../src/Composer/Installers/SMFInstaller.php | 10 -
.../Composer/Installers/ShopwareInstaller.php | 60 -
.../Installers/SilverStripeInstaller.php | 35 -
.../Installers/SiteDirectInstaller.php | 25 -
.../Composer/Installers/StarbugInstaller.php | 12 -
.../Composer/Installers/SyDESInstaller.php | 47 -
.../Composer/Installers/SyliusInstaller.php | 9 -
.../Composer/Installers/Symfony1Installer.php | 26 -
.../Composer/Installers/TYPO3CmsInstaller.php | 16 -
.../Installers/TYPO3FlowInstaller.php | 38 -
.../src/Composer/Installers/TaoInstaller.php | 30 -
.../Installers/TastyIgniterInstaller.php | 32 -
.../Composer/Installers/TheliaInstaller.php | 12 -
.../src/Composer/Installers/TuskInstaller.php | 14 -
.../Installers/UserFrostingInstaller.php | 9 -
.../Composer/Installers/VanillaInstaller.php | 10 -
.../Composer/Installers/VgmcpInstaller.php | 49 -
.../Composer/Installers/WHMCSInstaller.php | 21 -
.../Composer/Installers/WinterInstaller.php | 58 -
.../Composer/Installers/WolfCMSInstaller.php | 9 -
.../Installers/WordPressInstaller.php | 12 -
.../Composer/Installers/YawikInstaller.php | 32 -
.../src/Composer/Installers/ZendInstaller.php | 11 -
.../Composer/Installers/ZikulaInstaller.php | 10 -
.../composer/installers/src/bootstrap.php | 13 -
.../composer/jetpack_autoload_classmap.php | 205 -
.../composer/jetpack_autoload_filemap.php | 17 -
.../vendor/composer/jetpack_autoload_psr4.php | 29 -
.../class-autoloader-handler.php | 147 -
.../class-autoloader-locator.php | 90 -
.../jetpack-autoloader/class-autoloader.php | 90 -
.../jetpack-autoloader/class-container.php | 150 -
.../jetpack-autoloader/class-hook-manager.php | 76 -
.../class-latest-autoloader-guard.php | 86 -
.../class-manifest-reader.php | 99 -
.../class-path-processor.php | 194 -
.../class-php-autoloader.php | 93 -
.../class-plugin-locator.php | 153 -
.../class-plugins-handler.php | 164 -
.../class-shutdown-handler.php | 92 -
.../class-version-loader.php | 164 -
.../class-version-selector.php | 69 -
.../woocommerce-gutenberg-products-block.php | 287 -
.../packages/woocommerce-blocks/wp-cli.yml | 2 -
.../plugins/woocommerce/patterns/banner.php | 4 +-
wp/wp-content/plugins/woocommerce/readme.txt | 15 +-
.../PaymentGatewaySuggestions/Init.php | 9 +-
.../ComparisonOperation.php | 22 +-
.../RemoteInboxNotifications/SpecRunner.php | 16 +-
.../woocommerce/src/Blocks/BlockPatterns.php | 5 +-
.../Admin/Logging/FileV2/ListTable.php | 321 -
.../Admin/RemoteFreeExtensions/Init.php | 12 +-
.../Internal/Admin/WCPayPromotion/Init.php | 9 +-
.../woocommerce/vendor/composer/installed.php | 8 +-
.../composer/jetpack_autoload_classmap.php | 2224 +++----
.../composer/jetpack_autoload_filemap.php | 6 +-
.../plugins/woocommerce/woocommerce.php | 2 +-
.../admin/roles/class-role-manager-vip.php | 66 -
.../css/dist/academy-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/academy-2181.css | 1 -
.../css/dist/academy-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/academy-2190.css | 1 -
...demy-2180-rtl.css => academy-2191-rtl.css} | 0
.../{academy-2180.css => academy-2191.css} | 0
.../css/dist/admin-global-2181-rtl.css | 1 -
.../css/dist/admin-global-2181.css | 1 -
.../css/dist/admin-global-2190-rtl.css | 1 -
.../css/dist/admin-global-2190.css | 1 -
...2180-rtl.css => admin-global-2191-rtl.css} | 0
...-global-2180.css => admin-global-2191.css} | 0
.../css/dist/adminbar-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/adminbar-2181.css | 1 -
.../css/dist/adminbar-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/adminbar-2190.css | 1 -
...bar-2180-rtl.css => adminbar-2191-rtl.css} | 0
.../{adminbar-2180.css => adminbar-2191.css} | 0
.../css/dist/ai-generator-2181-rtl.css | 1 -
.../css/dist/ai-generator-2181.css | 1 -
.../css/dist/ai-generator-2190-rtl.css | 1 -
.../css/dist/ai-generator-2190.css | 1 -
...2180-rtl.css => ai-generator-2191-rtl.css} | 0
...nerator-2180.css => ai-generator-2191.css} | 0
.../css/dist/alerts-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/alerts-2181.css | 1 -
.../css/dist/alerts-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/alerts-2190.css | 1 -
...lerts-2180-rtl.css => alerts-2191-rtl.css} | 0
.../dist/{alerts-2180.css => alerts-2191.css} | 0
.../css/dist/black-friday-banner-2181-rtl.css | 1 -
.../css/dist/black-friday-banner-2181.css | 1 -
.../css/dist/black-friday-banner-2190-rtl.css | 1 -
.../css/dist/black-friday-banner-2190.css | 1 -
...l.css => black-friday-banner-2191-rtl.css} | 0
...-2180.css => black-friday-banner-2191.css} | 0
.../css/dist/dashboard-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/dashboard-2181.css | 1 -
.../css/dist/dashboard-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/dashboard-2190.css | 1 -
...rd-2180-rtl.css => dashboard-2191-rtl.css} | 0
...{dashboard-2180.css => dashboard-2191.css} | 0
.../css/dist/edit-page-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/edit-page-2181.css | 1 -
.../css/dist/edit-page-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/edit-page-2190.css | 1 -
...ge-2180-rtl.css => edit-page-2191-rtl.css} | 0
...{edit-page-2180.css => edit-page-2191.css} | 0
.../css/dist/elementor-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/elementor-2181.css | 1 -
.../css/dist/elementor-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/elementor-2190.css | 1 -
...or-2180-rtl.css => elementor-2191-rtl.css} | 0
...{elementor-2180.css => elementor-2191.css} | 0
.../css/dist/featured-image-2181-rtl.css | 1 -
.../css/dist/featured-image-2181.css | 1 -
.../css/dist/featured-image-2190-rtl.css | 1 -
.../css/dist/featured-image-2190.css | 1 -
...80-rtl.css => featured-image-2191-rtl.css} | 0
...image-2180.css => featured-image-2191.css} | 0
.../css/dist/filter-explanation-2181-rtl.css | 1 -
.../css/dist/filter-explanation-2181.css | 1 -
.../css/dist/filter-explanation-2190-rtl.css | 1 -
.../css/dist/filter-explanation-2190.css | 1 -
...tl.css => filter-explanation-2191-rtl.css} | 0
...n-2180.css => filter-explanation-2191.css} | 0
.../first-time-configuration-2181-rtl.css | 1 -
.../dist/first-time-configuration-2181.css | 1 -
.../first-time-configuration-2190-rtl.css | 1 -
.../dist/first-time-configuration-2190.css | 1 -
... => first-time-configuration-2191-rtl.css} | 0
....css => first-time-configuration-2191.css} | 0
.../wordpress-seo/css/dist/icons-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/icons-2181.css | 1 -
.../wordpress-seo/css/dist/icons-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/icons-2190.css | 1 -
...{icons-2180-rtl.css => icons-2191-rtl.css} | 0
.../dist/{icons-2180.css => icons-2191.css} | 0
.../css/dist/inside-editor-2181-rtl.css | 1 -
.../css/dist/inside-editor-2181.css | 1 -
.../css/dist/inside-editor-2190-rtl.css | 1 -
.../css/dist/inside-editor-2190.css | 1 -
...180-rtl.css => inside-editor-2191-rtl.css} | 0
...editor-2180.css => inside-editor-2191.css} | 0
.../css/dist/introductions-2181-rtl.css | 1 -
.../css/dist/introductions-2181.css | 1 -
.../css/dist/introductions-2190-rtl.css | 1 -
.../css/dist/introductions-2190.css | 1 -
...180-rtl.css => introductions-2191-rtl.css} | 0
...ctions-2180.css => introductions-2191.css} | 0
.../css/dist/metabox-2180-rtl.css | 1 -
.../wordpress-seo/css/dist/metabox-2180.css | 3 -
.../css/dist/metabox-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/metabox-2181.css | 3 -
...abox-2190-rtl.css => metabox-2191-rtl.css} | 0
.../{metabox-2190.css => metabox-2191.css} | 0
.../metabox-primary-category-2181-rtl.css | 1 -
.../dist/metabox-primary-category-2181.css | 1 -
.../metabox-primary-category-2190-rtl.css | 1 -
.../dist/metabox-primary-category-2190.css | 1 -
... => metabox-primary-category-2191-rtl.css} | 0
....css => metabox-primary-category-2191.css} | 0
.../wordpress-seo/css/dist/modal-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/modal-2181.css | 1 -
.../wordpress-seo/css/dist/modal-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/modal-2190.css | 1 -
...{modal-2180-rtl.css => modal-2191-rtl.css} | 0
.../dist/{modal-2180.css => modal-2191.css} | 0
.../css/dist/monorepo-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/monorepo-2181.css | 1 -
.../css/dist/monorepo-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/monorepo-2190.css | 1 -
...epo-2180-rtl.css => monorepo-2191-rtl.css} | 0
.../{monorepo-2180.css => monorepo-2191.css} | 0
.../css/dist/new-settings-2181-rtl.css | 1 -
.../css/dist/new-settings-2181.css | 1 -
.../css/dist/new-settings-2190-rtl.css | 1 -
.../css/dist/new-settings-2190.css | 1 -
...2180-rtl.css => new-settings-2191-rtl.css} | 0
...ettings-2180.css => new-settings-2191.css} | 0
.../css/dist/notifications-2181-rtl.css | 1 -
.../css/dist/notifications-2181.css | 1 -
.../css/dist/notifications-2190-rtl.css | 1 -
.../css/dist/notifications-2190.css | 1 -
...180-rtl.css => notifications-2191-rtl.css} | 0
...ations-2180.css => notifications-2191.css} | 0
.../css/dist/score_icon-2181-rtl.css | 1 -
.../css/dist/score_icon-2181.css | 1 -
.../css/dist/score_icon-2190-rtl.css | 1 -
.../css/dist/score_icon-2190.css | 1 -
...n-2180-rtl.css => score_icon-2191-rtl.css} | 0
...core_icon-2180.css => score_icon-2191.css} | 0
.../dist/structured-data-blocks-2181-rtl.css | 1 -
.../css/dist/structured-data-blocks-2181.css | 1 -
.../dist/structured-data-blocks-2190-rtl.css | 1 -
.../css/dist/structured-data-blocks-2190.css | 1 -
...ss => structured-data-blocks-2191-rtl.css} | 0
...80.css => structured-data-blocks-2191.css} | 0
.../css/dist/support-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/support-2181.css | 1 -
.../css/dist/support-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/support-2190.css | 1 -
...port-2180-rtl.css => support-2191-rtl.css} | 0
.../{support-2180.css => support-2191.css} | 0
.../css/dist/tailwind-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/tailwind-2181.css | 1 -
.../css/dist/tailwind-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/tailwind-2190.css | 1 -
...ind-2180-rtl.css => tailwind-2191-rtl.css} | 0
.../{tailwind-2180.css => tailwind-2191.css} | 0
.../css/dist/toggle-switch-2181-rtl.css | 1 -
.../css/dist/toggle-switch-2181.css | 1 -
.../css/dist/toggle-switch-2190-rtl.css | 1 -
.../css/dist/toggle-switch-2190.css | 1 -
...180-rtl.css => toggle-switch-2191-rtl.css} | 0
...switch-2180.css => toggle-switch-2191.css} | 0
.../css/dist/tooltips-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/tooltips-2181.css | 1 -
.../css/dist/tooltips-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/tooltips-2190.css | 1 -
...ips-2180-rtl.css => tooltips-2191-rtl.css} | 0
.../{tooltips-2180.css => tooltips-2191.css} | 0
.../css/dist/workouts-2181-rtl.css | 1 -
.../wordpress-seo/css/dist/workouts-2181.css | 1 -
.../css/dist/workouts-2190-rtl.css | 1 -
.../wordpress-seo/css/dist/workouts-2190.css | 1 -
...uts-2180-rtl.css => workouts-2191-rtl.css} | 0
.../{workouts-2180.css => workouts-2191.css} | 0
.../css/dist/wpseo-dismissible-2181-rtl.css | 1 -
.../css/dist/wpseo-dismissible-2181.css | 1 -
.../css/dist/wpseo-dismissible-2190-rtl.css | 1 -
.../css/dist/wpseo-dismissible-2190.css | 1 -
...rtl.css => wpseo-dismissible-2191-rtl.css} | 0
...le-2180.css => wpseo-dismissible-2191.css} | 0
.../css/dist/yoast-extensions-2181-rtl.css | 1 -
.../css/dist/yoast-extensions-2181.css | 1 -
.../css/dist/yoast-extensions-2190-rtl.css | 1 -
.../css/dist/yoast-extensions-2190.css | 1 -
...-rtl.css => yoast-extensions-2191-rtl.css} | 0
...ons-2180.css => yoast-extensions-2191.css} | 0
.../css/dist/yst_plugin_tools-2181-rtl.css | 1 -
.../css/dist/yst_plugin_tools-2181.css | 1 -
.../css/dist/yst_plugin_tools-2190-rtl.css | 1 -
.../css/dist/yst_plugin_tools-2190.css | 1 -
...-rtl.css => yst_plugin_tools-2191-rtl.css} | 0
...ols-2180.css => yst_plugin_tools-2191.css} | 0
.../css/dist/yst_seo_score-2181-rtl.css | 1 -
.../css/dist/yst_seo_score-2181.css | 1 -
.../css/dist/yst_seo_score-2190-rtl.css | 1 -
.../css/dist/yst_seo_score-2190.css | 1 -
...180-rtl.css => yst_seo_score-2191-rtl.css} | 0
..._score-2180.css => yst_seo_score-2191.css} | 0
.../class-post-type-sitemap-provider.php | 4 +-
.../plugins/wordpress-seo/readme.txt | 12 +-
.../src/deprecated/i18n/i18n-v3.php | 93 -
.../the-events-calendar-conditional.php | 25 -
.../coauthors-plus-activated-conditional.php | 27 -
.../coauthors-plus-flag-conditional.php | 23 -
.../schema/third-party/coauthor.php | 88 -
.../third-party/events-calendar-schema.php | 59 -
.../third-party/coauthors-plus.php | 173 -
.../third-party/the-events-calendar.php | 60 -
.../plugins/wordpress-seo/vendor/autoload.php | 2 +-
.../vendor/composer/autoload_real.php | 8 +-
.../vendor/composer/autoload_static.php | 8 +-
.../vendor/composer/installed.php | 4 +-
.../plugins/wordpress-seo/wp-seo-main.php | 27 +-
.../plugins/wordpress-seo/wp-seo.php | 2 +-
3452 files changed, 1327 insertions(+), 224370 deletions(-)
create mode 100644 wp/wp-content/plugins/search-filter-pro/includes/third-party/class-search-filter-translatepress.php
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/506499ddac13811fee8e.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4891.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4891.style.css
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.style.css
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5838.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.style.css
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/7846.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8758.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8994.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/9529.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/9616.js
delete mode 100644 wp/wp-content/plugins/woocommerce/assets/client/admin/product-editor/blocks/generic/taxonomy/types.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/LICENSE
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_breakpoints.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_colors.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_mixins.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_variables.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/component-init.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/external.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/grouped.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/simple.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-picker.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-select-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/test/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/add-to-cart-button.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/product-unavailable.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/quantity-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/support.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/image-size-settings.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/supports.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/test/block.test.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/supports.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/support.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/support.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/support.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/support.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/save.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/config.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/product-selector.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-template.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/with-product-selector.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/supports.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/supports.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/supports.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/test/block.test.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/block-registration-strategy.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-registration-manager.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-with-restriction.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/template-change-detector.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/create-blocks-from-template.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/get-block-map.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/register-block-single-product-template.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-parent-block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-standalone-blocks.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/README.MD
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/block-error.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/address-form.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/custom-validation-handler.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/prepare-address-fields.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/validate-shipping-country.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/cart-line-item-row.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/order-summary-item.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/common-icons.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/payment-method-icon.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/place-order-button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-backorder-badge/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-image/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-low-stock-badge/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-sale-badge/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-summary/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/address.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-location/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/package-rates.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/render-package-rate-option.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/__snapshots__/index.tsx.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/calculator-button.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-address.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-placeholder.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-rate-selector.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-via.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-address.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-placeholder.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/CountryInputProps.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/billing-country-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/country-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/shipping-country-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/countries-filler.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/close-button.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/utils/aria-helper.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/vendor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/noninteractive/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/docs/docs.mdx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/constrain-range-slider-values.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/test/constrain-range-slider-values.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/container.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-matching-products.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-products.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/test/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/trim-html.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/main.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar-layout.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/docs/docs.mdx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/snackbar.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/snackbar.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/StateInputProps.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/billing-state-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/shipping-state-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/state-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitter-callback.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitters.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/reducer.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/test/emitters.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart-item-quantity.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-event-listeners.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-item-quantity.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/test/use-collection.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-data.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-header.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/test/use-payment-method-interface.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-method-interface.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-methods.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/use-shipping-data.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-checkout-submit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-query-state.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-store-products.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-address.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-extension-data.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-submit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-customer-data.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-product-attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-query-state.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-show-shipping-total-warning.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-add-to-cart.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-events.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-products.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-validation.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/actions.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/event-emit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/reducer.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/submit/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/event-emit.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/event-emit.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-processor.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-provider.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/event-emit.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/event-emit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/container-width-context.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/editor-context.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/query-state-context.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/test/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/test/with-reviews.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-reviews.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-position-relative-to-viewport.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-previous.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-shallow-equal.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-container-queries.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-is-mounted.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-local-storage-state.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-position-relative-to-viewport.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-previous.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-shallow-equal.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-spoken-message.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-style-props.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-throw-error.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-typography-props.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/address.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/camel-case-keys.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/create-notice.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/debounce.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/derive-selected-shipping-rates.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/errors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-icons-from-payment-methods.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-inline-styles.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-navigation-type.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-valid-block-attributes.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/keyby.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/lazy-load-script.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/legacy-events.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/map-keys.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/pick.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/preload-script.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/product-data.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/render-frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/shipping-rates.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/snake-case-keys.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/test/address.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/test/errors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/test/shipping-rates.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/block-components/get-registered-block-components.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/block-components/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/block-components/register-block-component.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/block-components/registered-block-components-init.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/block-components/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/assertions.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/express-payment-method-config.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/extensions-config.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/payment-method-config-helper.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/payment-method-config.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/registry.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/test/payment-method-config-helper.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/test/payment-method-config.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks-registry/payment-methods/test/registry.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/active-attribute-filters.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/block-wrapper.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/deprecated.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/filter-placeholders.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/active-filters/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/block-wrapper.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/checkbox-filter.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/deprecated.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/preview.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/test/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/attribute-filter/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/breadcrumbs/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/breadcrumbs/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/breadcrumbs/icon.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/breadcrumbs/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/breadcrumbs/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/block-settings/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/editor-utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/hacks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/icon.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/express-payment-methods.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/express-payment/cart-express-payment.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/express-payment/checkout-express-payment.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/express-payment/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/express-payment/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/no-payment-methods/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/no-payment-methods/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/payment-method-card.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/payment-method-error-boundary.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/payment-method-options.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/payment-methods.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/saved-payment-method-options.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/test/payment-methods.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/payment-methods/test/saved-payment-method-options.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/sidebar-notices/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/use-forced-layout/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/use-forced-layout/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/use-forced-layout/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/view-switcher/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/view-switcher/switcher.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/view-switcher/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart-checkout-shared/view-switcher/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/attributes.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/cart-cross-sells-product-list/cart-cross-sells-product.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/cart-cross-sells-product-list/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/context.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/edit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-accepted-payment-methods-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-accepted-payment-methods-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-accepted-payment-methods-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-accepted-payment-methods-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-accepted-payment-methods-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-cross-sells-products/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-express-payment-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-express-payment-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-express-payment-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-express-payment-block/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-express-payment-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-express-payment-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-items-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-items-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-items-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-items-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-line-items-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-line-items-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-line-items-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-line-items-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-line-items-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-block/slotfills.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-coupon-form/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-coupon-form/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-coupon-form/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-coupon-form/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-coupon-form/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-discount/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-discount/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-discount/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-discount/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-discount/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-fee/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-fee/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-fee/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-fee/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-fee/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-heading/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-heading/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-heading/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-heading/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-heading/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-heading/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-heading/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-shipping/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-shipping/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-shipping/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-shipping/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-shipping/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-subtotal/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-subtotal/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-subtotal/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-subtotal/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-subtotal/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-taxes/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-taxes/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-taxes/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-taxes/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-taxes/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-order-summary-taxes/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-totals-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-totals-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-totals-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-totals-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/cart-totals-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/component-metadata.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/empty-cart-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/empty-cart-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/empty-cart-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/empty-cart-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/empty-cart-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/filled-cart-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/filled-cart-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/filled-cart-block/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/filled-cart-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/filled-cart-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/proceed-to-checkout-block/test/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/inner-blocks/register-components.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/test/block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/test/slots.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/cart/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/catalog-sorting/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/catalog-sorting/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/catalog-sorting/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/catalog-sorting/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/address-card/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/address-card/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/address-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/address-wrapper/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/checkout-order-error/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/checkout-order-error/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/checkout-order-error/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/context.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/empty-cart/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/empty-cart/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/form-step/additional-fields.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/form-step/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/form-step/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/form-step/form-step-block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/form-step/form-step-heading.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/form-step/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-actions-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/customer-address.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-billing-address-block/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-contact-information-block/login-prompt.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-express-payment-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-express-payment-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-express-payment-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-express-payment-block/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-express-payment-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-fields-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-fields-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-fields-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-fields-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-fields-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-note-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-note-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-note-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-note-block/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-note-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-note-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-block/slotfills.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-block/test/block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-cart-items/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-cart-items/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-cart-items/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-cart-items/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-cart-items/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-coupon-form/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-coupon-form/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-coupon-form/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-coupon-form/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-coupon-form/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-discount/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-discount/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-discount/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-discount/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-discount/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-fee/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-fee/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-fee/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-fee/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-fee/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-shipping/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-shipping/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-shipping/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-shipping/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-shipping/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-subtotal/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-subtotal/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-subtotal/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-subtotal/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-subtotal/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-taxes/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-taxes/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-taxes/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-taxes/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-taxes/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-order-summary-taxes/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-payment-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-payment-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-payment-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-payment-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-payment-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-payment-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-pickup-options-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-pickup-options-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-pickup-options-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-pickup-options-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-pickup-options-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-pickup-options-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-pickup-options-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/customer-address.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-address-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/shared/helpers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/shared/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/shared/rate-price.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-method-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/no-shipping-placeholder/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/no-shipping-placeholder/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-shipping-methods-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/test/edit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-terms-block/test/frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-totals-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-totals-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-totals-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-totals-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/checkout-totals-block/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/component-metadata.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/inner-blocks/register-components.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/order-notes/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/order-notes/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/phone-number/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/styles/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/styles/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/checkout/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/cart.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/checkout.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/placeholder.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-shortcode/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/archive-product.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/assets/doc-image-single-product-classic-block.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/order-confirmation.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/product-search-results.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/single-product.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/test/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/classic-template/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/components/inspector.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/components/price-slider.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/price-filter/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/components/inspector.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/preview.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/inner-blocks/stock-filter/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/test/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/type.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/collection-filters/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/sidebar-settings.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/customer-account/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/block-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/call-to-action.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/constrained-resizable.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-category/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-category/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-category/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-category/example.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-category/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-category/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-category/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-product/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-product/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-product/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-product/example.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-product/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/featured-product/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/image-editor.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/inspector-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/register.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/use-background-image.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/with-api-error.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/with-edit-mode.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/with-editing-image.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/with-featured-item.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/featured-items/with-update-button-attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/context.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/register-components.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/filter-wrapper/upgrade.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/edit-mode.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/inspector-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/handpicked-products/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/migration-products-to-product-collection/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/migration-products-to-product-collection/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/migration-products-to-product-collection/migration-from-product-collection-to-products.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/migration-products-to-product-collection/migration-from-products-to-product-collection.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/migration-products-to-product-collection/migration-utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/migration-products-to-product-collection/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/component-frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks-style.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/allowed-blocks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/empty-mini-cart-contents-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/filled-mini-cart-contents-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-cart-button-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-cart-button-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-cart-button-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-cart-button-block/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-cart-button-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-cart-button-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-checkout-button-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-checkout-button-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-checkout-button-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-checkout-button-block/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-checkout-button-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-checkout-button-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-checkout-button-block/test/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-footer-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-footer-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-footer-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-footer-block/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-footer-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-footer-block/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-footer-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-items-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-items-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-items-block/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-items-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-products-table-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-products-table-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-products-table-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-products-table-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-shopping-button-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-items-counter-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-items-counter-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-items-counter-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-items-counter-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-label-block/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-label-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-label-block/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-label-block/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-label-block/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/mini-cart-title-label-block/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/register-components.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/mini-cart-contents/inner-blocks/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/quantity-badge/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/quantity-badge/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/test/block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/utils/data.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/utils/defaults.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/utils/set-styles.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/mini-cart/utils/test/data.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/additional-information/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/additional-information/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/additional-information/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/additional-information/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-address/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-address/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-address/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-address/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-wrapper/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-wrapper/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/billing-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads-wrapper/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads-wrapper/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads-wrapper/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/downloads/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-address/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-address/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-address/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-address/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-wrapper/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-wrapper/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/shipping-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/status/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/status/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/status/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/status/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/summary/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/summary/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/summary/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/summary/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals-wrapper/attributes.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals-wrapper/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/order-confirmation/totals/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/page-content-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/page-content-wrapper/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/page-content-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/block-wrapper.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/deprecated.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/test/use-price-constraints.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/use-price-constraints.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/price-filter/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-best-sellers/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-best-sellers/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-best-sellers/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-best-sellers/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-best-sellers/inspector-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-best-sellers/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-categories/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-categories/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-categories/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-categories/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-categories/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-categories/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-categories/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/edit-mode.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/inspector-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-category/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/icon.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inner-blocks/no-results/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inner-blocks/no-results/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inner-blocks/no-results/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inner-blocks/no-results/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/attributes-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/columns-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/created-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/featured-products-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/hand-picked-products-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/inherit-query-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/keyword-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/layout-options-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/on-sale-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/order-by-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/stock-status-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/taxonomy-controls/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/taxonomy-controls/taxonomy-item.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/inspector-controls/upgrade-notice.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/toolbar-controls/display-layout-toolbar.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/toolbar-controls/display-settings-toolbar.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/toolbar-controls/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/toolbar-controls/pattern-chooser-toolbar.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/toolbar-controls/pattern-selection-modal.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/variations/elements/product-summary.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/variations/elements/product-title.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/variations/elements/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-collection/variations/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/block-settings/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/icon.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/icons.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/settings.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image-next-previous/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/frontend.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/icon.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-large-image/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/icons.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/settings.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-pager/types.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-thumbnails/block-settings/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-thumbnails/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-thumbnails/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-thumbnails/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-thumbnails/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-thumbnails/icon.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/inner-blocks/product-gallery-thumbnails/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/settings.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-gallery/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-new/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-new/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-new/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-new/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-new/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-on-sale/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-on-sale/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-on-sale/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-on-sale/inspector-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-on-sale/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/inspector-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/inspector-controls/attributes-filter.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/inspector-controls/popular-presets.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/inspector-controls/product-selector.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/inspector-controls/upgrade-notice.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/variations/elements/product-summary.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/variations/elements/product-template.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/variations/elements/product-title.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/variations/elements/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/variations/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/variations/product-query.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-query/variations/related-products.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-results-count/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-results-count/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-results-count/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-results-count/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-search/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-search/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-search/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-search/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-search/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-tag/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-tag/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-tag/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-tag/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-tag/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-tag/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-template/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-template/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-template/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-template/icon.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-template/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-template/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-template/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-top-rated/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-top-rated/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-top-rated/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-top-rated/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/product-top-rated/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/edit-mode.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/inspector-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products-by-attribute/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/defaults.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/deprecated.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/edit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/all-products/save.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/base-utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/edit-utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/edit.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/products/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/block-wrapper.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/deprecated.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/preview.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/test/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/rating-filter/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/all-reviews/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/all-reviews/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/all-reviews/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/all-reviews/no-reviews-placeholder.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/all-reviews/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/edit-utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/editor-block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/editor-container-block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/example.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/frontend-block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/frontend-container-block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-category/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-category/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-category/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-category/no-reviews-placeholder.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-category/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-product/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-product/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-product/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-product/no-reviews-placeholder.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/reviews-by-product/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/save.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/test/frontend-block.test.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/reviews/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/shared/styles/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/constants.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/edit/editor-block-controls.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/edit/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/edit/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/edit/layout-editor.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/edit/shared-product-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/single-product/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/block-wrapper.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/deprecated.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/frontend.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/preview.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/test/__snapshots__/block.tsx.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/test/block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/stock-filter/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/store-notices/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/store-notices/edit.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/store-notices/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/blocks/store-notices/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/action-types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/actions.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/default-state.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/notify-errors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/notify-quantity-changes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/push-changes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/reducers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/resolvers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/selectors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/test/notify-quantity-changes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/test/push-changes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/test/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/test/resolvers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/test/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/thunks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/update-payment-methods.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/cart/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/action-types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/actions.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/default-state.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/reducers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/selectors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/test/reducer.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/thunks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/checkout/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/action-types.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/actions.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/resolvers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/test/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/test/resolvers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/collections/test/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/mapped-types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/action-types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/actions.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/default-state.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/reducers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/selectors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/test/actions.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/test/check-payment-methods.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/test/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/test/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/test/set-default-payment-method.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/test/thunks.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/thunks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/utils/check-payment-methods.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/utils/filter-active-saved-payment-methods.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/payment/utils/set-default-payment-method.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/action-types.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/actions.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/test/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/test/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/query-state/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/action-types.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/actions.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/resolvers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/test/reducers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/test/resolvers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/test/selectors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/test/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/schema/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/shared-controls.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/store-notices/action-types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/store-notices/actions.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/store-notices/default-state.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/store-notices/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/store-notices/reducers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/store-notices/selectors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/utils/has-in-state.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/utils/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/utils/process-error-response.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/utils/update-state.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/action-types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/actions.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/reducers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/selectors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/test/reducers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/data/validation/test/selectors.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/block-title/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/block-title/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/color-panel/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/color-panel/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/default-notice/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/default-notice/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/edit-product-link/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/editable-button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/error-placeholder/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/error-placeholder/error-message.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/error-placeholder/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/error-placeholder/stories/error-message.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/error-placeholder/stories/error-placeholder.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/expandable-search-list-item/expandable-search-list-item.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/external-link-card/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/external-link-card/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/external-link-card/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/feedback-prompt/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/feedback-prompt/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/grid-content-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/grid-layout-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/heading-toolbar/heading-level-icon.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/heading-toolbar/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/incompatible-extension-notice/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/incompatible-extension-notice/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/incompatible-extension-notice/modal.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/incompatible-extension-notice/use-combined-incompatibility-notice.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/incompatible-extension-notice/use-incompatible-extensions-notice.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/incompatible-extension-notice/use-incompatible-payment-gateways-notice.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/no-payment-methods-notice/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/no-payment-methods-notice/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/page-selector/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-attribute-term-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-attribute-term-control/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-category-control/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-category-control/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-control/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-orderby-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-orderby-control/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-stock-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-tag-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-tag-control/product-tag-item.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-tag-control/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/product-tag-control/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/products-control/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/item.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/search-list-control.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/test/hierarchy.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/search-list-control/utils.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/sidebar-compatibility-notice/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/sidebar-compatibility-notice/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/sidebar-compatibility-notice/use-compatibility-notice.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/tag/editor.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/tag/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/tag/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/tag/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/text-toolbar-button/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/text-toolbar-button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/editor-components/utils/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/google-analytics/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/google-analytics/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/google-analytics/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/bacs/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/bacs/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/cheque/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/cheque/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/cod/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/cod/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/paypal/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/payment-methods/paypal/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/edit-location/form.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/edit-location/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/general-settings.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/location-settings.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/save.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/settings-context.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/settings-page.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/pickup-location/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/shared-components/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/shared-components/settings-card/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/shared-components/settings-modal/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/shared-components/settings-section/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/extensions/shipping-methods/shared-components/sortable-table/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/filters/block-list-block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/filters/exclude-draft-status-from-analytics.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/filters/get-block-attributes.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/global.d.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/test/with-categories.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/test/with-category.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/test/with-product-variations.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/test/with-product.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/test/with-searched-products.jsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/test/with-transform-single-select-to-multiple-select.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/with-attributes.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/with-categories.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/with-category.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/with-product-variations.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/with-product.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/with-searched-products.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/hocs/with-transform-single-select-to-multiple-select.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/docs/iconography.mdx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/alert.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/bag-alt.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/bag.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/barcode.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/cart-outline.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/cart.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/check-payment.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/customer-account-style-alt.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/customer-account-style.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/customer-account.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/eye.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/fields.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/filled-cart.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/folder-starred.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/mini-cart-alt.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/mini-cart.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/product-details.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/product-meta.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/remove-cart.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/sparkles.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/stacks.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/thumb-up.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/thumbnails-position-bottom.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/thumbnails-position-left.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/thumbnails-position-right.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/toggle.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/totals.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/icons/library/woo.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/constants.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/directives.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/hooks.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/router.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/store.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/utils.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/interactivity/vdom.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/middleware/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/middleware/store-api-nonce.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/cart.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/categories.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/grid-block.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/products.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/reviews.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/saved-payment-methods.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/shipping-rates.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/previews/single-product-block.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/blocks/constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/blocks/feature-flags.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/blocks/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/default-address-fields.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/default-constants.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/settings-init.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/test/compare-with-wp-version.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/test/get-setting-with-coercion.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/test/get-setting.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/settings/shared/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/shared/context/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/shared/context/inner-block-layout-context.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/shared/context/product-data-context.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/shared/hocs/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/shared/hocs/with-filtered-attributes.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/shared/hocs/with-product-data-context.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/templates/revert-button/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/templates/revert-button/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/add-to-cart-form.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/address-fields.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/api-error-response.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/api-response.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/billing.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/blocks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/cart-response.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/cart.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/cart.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/checkout.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/contexts.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/contexts.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/currency.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/events.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/hocs.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/hooks.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/hooks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/notices.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/objects.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/payment-method-interface.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/payments.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/product-response.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/settings.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/shipping.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/shipping.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/stock-status.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/taxes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/trim-html.d.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-defs/validation.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/address.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/api-error-response.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/boolean.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/cart-response-totals.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/empty.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/error.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/function.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/null.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/number.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/object.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/observers.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/ratings.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/stock-status.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/string.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/test/empty.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/test/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/test/object.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/test/validation.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/types/type-guards/validation.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/array-operations.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/attributes-query.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/attributes.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/filters.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/find-block.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/is-site-editor-page.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/is-widget-editor-page.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/notices.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/object-operations.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/products.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/sanitize-html.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/shared-attributes.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/test/filters.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/test/notices.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/test/products.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/test/trim-words.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/utils/trim-words.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/2589-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/3810-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/4124-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/4597-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/8280-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-wrapper-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-wrapper-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters-wrapper.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/active-filters/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/add-to-cart-form-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/add-to-cart-form-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/add-to-cart-form.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/add-to-cart-form/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-products/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-reviews-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-reviews-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-reviews-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-reviews.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-reviews.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/all-reviews.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-wrapper-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-wrapper-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter-wrapper.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/attribute-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/blocks-checkout.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/blocks-checkout.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/blocks-components.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/blocks-components.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/breadcrumbs-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/breadcrumbs-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/breadcrumbs.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/breadcrumbs.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/breadcrumbs.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/breadcrumbs/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-accepted-payment-methods-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-accepted-payment-methods-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-cross-sells-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-cross-sells-products-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-cross-sells-products-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-cross-sells-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-express-payment-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-express-payment-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-items-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-items-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-line-items-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-line-items-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-order-summary-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-order-summary-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-totals-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/cart-totals-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/empty-cart-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/empty-cart-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/filled-cart-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/filled-cart-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-coupon-form-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-coupon-form-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-discount-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-discount-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-fee-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-fee-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-heading-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-heading-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-shipping-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-shipping-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-subtotal-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-subtotal-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-taxes-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/order-summary-taxes-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/proceed-to-checkout-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-blocks/proceed-to-checkout-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/cart.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/catalog-sorting-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/catalog-sorting-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/catalog-sorting.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/catalog-sorting.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/catalog-sorting.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/catalog-sorting/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/actions-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/actions-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/billing-address-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/billing-address-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/contact-information-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/contact-information-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/express-payment-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/fields-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/fields-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-note-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-cart-items-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-cart-items-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-coupon-form-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-coupon-form-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-discount-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-discount-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-fee-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-fee-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-shipping-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-shipping-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-subtotal-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-subtotal-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-taxes-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/order-summary-taxes-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/payment-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/payment-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/pickup-options-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/pickup-options-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/shipping-address-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/shipping-address-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/shipping-method-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/shipping-method-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/shipping-methods-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/shipping-methods-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/terms-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/terms-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/totals-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-blocks/totals-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/checkout/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/classic-shortcode-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/classic-shortcode-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/classic-shortcode-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/classic-shortcode.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/classic-shortcode.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/classic-shortcode.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/classic-shortcode/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-filters-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-filters.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-filters.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-filters/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-price-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/collection-stock-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/customer-account-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/customer-account-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/customer-account-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/customer-account.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/customer-account.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/customer-account.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/customer-account/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-category-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-category-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-category-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-category.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-category.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-category.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-category/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-product-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-product-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-product-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-product.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-product.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-product.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/featured-product/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/filter-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/handpicked-products-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/handpicked-products-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/handpicked-products.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/handpicked-products.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/handpicked-products/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-accepted-payment-methods-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-cross-sells-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-cross-sells-products-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-express-payment-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-items-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-line-items-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-coupon-form-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-discount-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-fee-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-heading-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-shipping-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-subtotal-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-order-summary-taxes-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/cart-totals-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-actions-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-billing-address-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-contact-information-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-express-payment-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-fields-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-note-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-cart-items-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-coupon-form-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-discount-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-fee-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-shipping-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-subtotal-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-order-summary-taxes-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-payment-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-pickup-options-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-shipping-address-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-shipping-method-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-shipping-methods-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-terms-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/checkout-totals-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/empty-cart-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/empty-mini-cart-contents-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/filled-cart-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/filled-mini-cart-contents-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-cart-button-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-checkout-button-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-footer-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-items-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-products-table-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-shopping-button-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-title-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-title-items-counter-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/mini-cart-title-label-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/inner-blocks/proceed-to-checkout-block/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/legacy-template-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/legacy-template-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/legacy-template-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/legacy-template.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/legacy-template.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/legacy-template.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-component-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-component-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/cart-button-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/cart-button-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/checkout-button-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/checkout-button-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/empty-cart-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/empty-cart-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/filled-cart-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/filled-cart-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/footer-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/footer-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/items-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/items-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/products-table-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/shopping-button-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/shopping-button-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/title-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/title-items-counter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/title-items-counter-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/title-label-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/title-label-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-block/title-style.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-contents.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/mini-cart/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-additional-information-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-additional-information-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-additional-information.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-additional-information.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-additional-information.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-additional-information/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-address-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-address-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-address.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-address.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-address.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-address/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-wrapper-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-wrapper.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-wrapper.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-billing-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads-wrapper-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads-wrapper-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads-wrapper.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads-wrapper.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-downloads/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-address-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-address-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-address.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-address.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-address.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-address/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-wrapper-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-wrapper.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-wrapper.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-shipping-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-status-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-status-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-status.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-status.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-status.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-status/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-summary-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-summary-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-summary.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-summary.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-summary.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-summary/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals-wrapper-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals-wrapper.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals-wrapper.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/order-confirmation-totals/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/packages-style-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/packages-style-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/packages-style-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/packages-style.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/page-content-wrapper-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/page-content-wrapper.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/page-content-wrapper.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/page-content-wrapper/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-wrapper-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-wrapper-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter-wrapper.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-format.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/price-format.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-add-to-cart-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-add-to-cart-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-add-to-cart.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-add-to-cart.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-average-rating-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-average-rating.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-average-rating/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-best-sellers-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-best-sellers-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-best-sellers.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-best-sellers.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-best-sellers/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-button-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-button-interactivity-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-button-interactivity-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-button-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-button.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-button.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-button/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-categories-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-categories-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-categories.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-categories.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-categories.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-categories/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-category-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-category-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-category.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-category.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-category/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection-no-results-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection-no-results.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection-no-results.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection-no-results/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-collection/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-details-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-details-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-details-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-details.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-details/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-next-previous-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-next-previous-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-next-previous.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-next-previous.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-next-previous/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-large-image/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-pager-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-pager-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-pager.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-pager.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-pager/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-thumbnails-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-thumbnails-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-thumbnails.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-thumbnails.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery-thumbnails/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-gallery/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image-gallery-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image-gallery-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image-gallery.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image-gallery/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-image.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-meta/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-new-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-new-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-new.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-new.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-new/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-on-sale-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-on-sale-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-on-sale.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-on-sale.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-price-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-price-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-price.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-price.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-query-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-query-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-query-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-query.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-query.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-query.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-counter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-counter.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-counter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-stars-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-stars-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-stars.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-stars.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating-stars/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-rating/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-results-count-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-results-count-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-results-count.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-results-count.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-results-count.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-results-count/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-reviews-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-reviews-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-reviews.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-reviews/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sale-badge-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sale-badge-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sale-badge.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sale-badge.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-search-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-search-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-search-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-search.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-search.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-search.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sku-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sku-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sku.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-sku.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-stock-indicator-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-stock-indicator-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-stock-indicator.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-stock-indicator.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-summary-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-summary-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-summary.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-summary.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-tag-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-tag-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-tag.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-tag.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-tag/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-template-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-template-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-template-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-template.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-template.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-template.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-template/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-title-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-title-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-title.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-title.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-top-rated-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-top-rated-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-top-rated.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-top-rated.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/product-top-rated/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/products-by-attribute-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/products-by-attribute-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/products-by-attribute.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/products-by-attribute.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/products-by-attribute/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-wrapper-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-wrapper-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter-wrapper.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/rating-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/related-products/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-category-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-category-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-category-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-category.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-category.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-category.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-product-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-product-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-product-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-product.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-product.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-by-product.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/reviews-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/single-product-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/single-product-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/single-product-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/single-product.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/single-product.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/single-product.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/single-product/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-frontend.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-wrapper-frontend.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-wrapper-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter-wrapper.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/stock-filter/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/store-notices-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/store-notices.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/store-notices.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/store-notices/block.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-classic-template-revert-button-style-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-classic-template-revert-button-style-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-classic-template-revert-button-style.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-classic-template-revert-button.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-classic-template-revert-button.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-data.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-data.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-editor-style-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-editor-style.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-google-analytics.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-google-analytics.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-middleware.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-middleware.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-registry.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-registry.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-rtl.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-shared-context.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-shared-context.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-shared-hocs.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-shared-hocs.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-style.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-style.js.LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-vendors.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks-vendors.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks.css
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-blocks.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-interactivity-dropdown.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-interactivity-dropdown.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-interactivity.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-interactivity.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-bacs.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-bacs.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-cheque.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-cheque.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-cod.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-cod.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-paypal.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-payment-method-paypal.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-settings.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-settings.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-shipping-method-pickup-location.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/build/wc-shipping-method-pickup-location.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/checkstyle.xml
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/global.d.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/block-error.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/block-placeholders/product-image-gallery.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/block-placeholders/product-reviews.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/blocks/mini-cart/cart-drawer-rtl.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/blocks/mini-cart/cart-drawer.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/beach-landscape-sea-coast-nature-person.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/crafting-pots.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/desk-table-wood-chair-floor-home-square.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/dining-room.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/dish-food-baking-dessert-bread-bakery.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/dish-meal-food-breakfast-dessert-eat.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/floor-home-decoration-fireplace-property-living-room.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/fresh-lettuce-washed.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/fresh-organic-tomatoes.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/hand-guitar-finger-tshirt-clothing-rack.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/hand-made-pots.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/leather-guitar-typewriter-red-gadget-sofa.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/living-room-sofa.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/living-room.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/man-person-winter-photography-statue-coat.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/music-technology-play-equipment-studio-gadget.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/office.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/pattern-fashion-clothing-outerwear-wool-scarf.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/person-winter-blur-wood-girl-woman.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/plant-in-vase.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/russet-organic-potatoes.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/shop-jeans.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/sweet-organic-lemons.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/sweet-restaurant-celebration-food-chocolate-cupcake.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/table-floor-home-living-room-furniture-room-square.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/table-floor-home-living-room-furniture-room.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/table-floor-interior-atmosphere-living-room-furniture-square-lg.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/table-floor-interior-atmosphere-living-room-furniture-square.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/table-white-chair-floor-shelf-lamp-square-lg.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/table-wood-chair-floor-living-room-furniture-horizontal.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/table-wood-chair-floor-living-room-furniture-vertical.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/technology-joystick-gadget-console-games-playstation.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/technology-white-camera-photography-vintage-photographer.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/pattern-placeholders/wood-home-wall-decoration-shelf-living-room.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/alipay.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/amex.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/bancontact.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/diners.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/discover.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/eps.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/giropay.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/ideal.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/jcb.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/laser.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/maestro.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/mastercard.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/multibanco.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/p24.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/sepa.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/sofort.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/unionpay.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/visa.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/payment-methods/wechat.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/beanie.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/cap.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/collection.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/hoodie-with-logo.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/hoodie-with-pocket.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/hoodie-with-zipper.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/long-sleeve-tee.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/pennant.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/polo.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/previews/tshirt.jpg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/template-placeholders/archive-product.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/template-placeholders/fallback.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/images/template-placeholders/single-product.svg
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/get-registered-blocks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/inserter.png
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/register-checkout-block.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/registered-blocks.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/blocks-registry/utils.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/checkbox-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/checkbox-control/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/checkbox-control/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/discounts-meta/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/error-boundary/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/label/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/order-local-pickup-packages/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/order-meta/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/order-shipping-packages/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/text-input/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/components/validation-input-error/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/filter-registry/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/filter-registry/test/admin.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/filter-registry/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/slot/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/extension-cart-update.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/validation/get-validity-message-for-input.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/validation/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/validation/is-postcode.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/validation/must-contain.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/validation/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/checkout/utils/validation/test/is-postcode.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/button/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/checkbox-list/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/checkbox-list/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/checkbox-list/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/chip.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/removable-chip.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/stories/chip.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/stories/removable-chip.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/chip/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/form-step/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/form-step/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/form-step/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/form-step/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/form-step/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/formatted-monetary-amount/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/formatted-monetary-amount/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/formatted-monetary-amount/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/label/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/label/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/label/test/__snapshots__/index.js.snap
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/label/test/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/panel/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/panel/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control-accordion/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control-accordion/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control/option-layout.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control/option.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/radio-control/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/sort-select/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/sort-select/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/sort-select/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/spinner/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/spinner/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/spinner/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/store-notice/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/store-notices-container/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/store-notices-container/snackbar-notices.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/store-notices-container/store-notices.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/store-notices-container/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/store-notices-container/test/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/store-notices-container/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/text-input/stories/text-input.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/text-input/stories/validated-text-input.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/text-input/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/text-input/test/validated-text-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/text-input/text-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/text-input/types.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/text-input/validated-text-input.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/textarea/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/textarea/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/textarea/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/title/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/title/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/title/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals-wrapper/docs/docs.mdx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals-wrapper/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals-wrapper/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals-wrapper/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/fees/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/fees/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/item/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/item/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/item/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/subtotal/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/subtotal/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/taxes/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/totals/taxes/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/validation-input-error/index.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/validation-input-error/stories/index.stories.tsx
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/components/validation-input-error/style.scss
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/interactivity-components/dropdown/index.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/prices/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/prices/utils/index.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/prices/utils/price.ts
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/packages/prices/utils/test/price.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patches/wordpress-components+14.2.0.patch
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/banner.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/discount-banner-with-image.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/discount-banner.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/featured-category-cover-image.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/featured-category-focus.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/featured-category-triple.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/featured-products-fresh-and-tasty.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/filters.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-large-dark.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-large.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-simple-dark.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-simple-menu.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-simple.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-with-2-menus-dark.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-with-2-menus.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/footer-with-3-menus.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/header-centered-pattern.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/header-essential-dark.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/header-essential.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/header-large-dark.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/header-large.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/header-minimal.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/hero-product-3-split.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/hero-product-chessboard.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/hero-product-split.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/just-arrived-full-hero.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/no-products-found.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-3-columns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-4-columns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-5-columns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-banner.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-featured-products-5-columns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-full-grid.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-grid.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-rows.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collection-simple-grid.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collections-featured-collection.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collections-featured-collections.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-collections-newest-arrivals.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-details-listing.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-details-pattern.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-featured-2-columns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-hero-2-col-2-row.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-hero.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-listing-with-gallery-and-description.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-query-4-column-product-row.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-query-large-image-product-gallery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-query-minimal-product-list.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-query-product-gallery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-query-product-list-with-1-1-images.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-query-product-list-with-full-product-description.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/product-search-form.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/related-products.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/shop-by-price.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/small-discount-banner-with-image.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/social-follow-us-in-social-media.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/store-info-alt-image-and-text.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/testimonials-3-columns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/patterns/testimonials-single.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/readme.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/AI/Configuration.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/AI/Connection.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Assets.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Assets/Api.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Assets/AssetDataRegistry.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/AssetsController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockPatterns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTemplatesController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AbstractBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AbstractDynamicBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AbstractInnerBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AbstractProductGrid.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ActiveFilters.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AddToCartForm.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AllProducts.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AllReviews.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AtomicBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/AttributeFilter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/Breadcrumbs.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/Cart.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartAcceptedPaymentMethodsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartCrossSellsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartCrossSellsProductsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartExpressPaymentBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartItemsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartLineItemsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummaryBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummaryCouponFormBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummaryDiscountBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummaryFeeBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummaryHeadingBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummaryShippingBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummarySubtotalBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartOrderSummaryTaxesBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CartTotalsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CatalogSorting.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/Checkout.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutActionsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutBillingAddressBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutContactInformationBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutExpressPaymentBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutFieldsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderNoteBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummaryBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummaryCartItemsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummaryCouponFormBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummaryDiscountBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummaryFeeBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummaryShippingBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummarySubtotalBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutOrderSummaryTaxesBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutPaymentBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutPickupOptionsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutShippingAddressBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutShippingMethodBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutShippingMethodsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutTermsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CheckoutTotalsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ClassicShortcode.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ClassicTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CollectionFilters.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CollectionPriceFilter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CollectionStockFilter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/CustomerAccount.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/EmptyCartBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/EmptyMiniCartContentsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/FeaturedCategory.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/FeaturedItem.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/FeaturedProduct.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/FilledCartBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/FilledMiniCartContentsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/FilterWrapper.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/HandpickedProducts.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCart.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartCartButtonBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartCheckoutButtonBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartContents.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartFooterBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartItemsBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartProductsTableBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartShoppingButtonBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartTitleBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartTitleItemsCounterBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/MiniCartTitleLabelBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/AbstractOrderConfirmationBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/AdditionalInformation.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/BillingAddress.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/BillingWrapper.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/Downloads.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/DownloadsWrapper.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/ShippingAddress.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/ShippingWrapper.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/Status.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/Summary.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/Totals.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/OrderConfirmation/TotalsWrapper.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/PageContentWrapper.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/PriceFilter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProceedToCheckoutBlock.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductAddToCart.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductAverageRating.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductBestSellers.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductButton.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductCategories.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductCategory.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductCollection.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductCollectionNoResults.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductDetails.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductGallery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductGalleryLargeImage.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductGalleryLargeImageNextPrevious.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductGalleryPager.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductGalleryThumbnails.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductImage.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductImageGallery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductNew.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductOnSale.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductPrice.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductQuery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductRating.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductRatingCounter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductRatingStars.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductResultsCount.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductReviews.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductSKU.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductSaleBadge.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductSearch.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductStockIndicator.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductSummary.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductTag.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductTitle.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductTopRated.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ProductsByAttribute.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/RatingFilter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/RelatedProducts.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ReviewsByCategory.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/ReviewsByProduct.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/SingleProduct.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/StockFilter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypes/StoreNotices.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/BlockTypesController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Bootstrap.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Package.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/CreateAccount.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/DraftOrders.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/Email/CustomerNewAccount.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/FeatureGating.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/GoogleAnalytics.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/Hydration.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/Notices.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/OnboardingTasks/ReviewCheckoutTask.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Domain/Services/OnboardingTasks/TasksController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Images/Pexels.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/InboxNotifications.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Installer.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Integrations/IntegrationInterface.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Integrations/IntegrationRegistry.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Interactivity/class-wc-interactivity-store.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Interactivity/client-side-navigation.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Interactivity/load.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Interactivity/scripts.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Interactivity/store.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/InteractivityComponents/Dropdown.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Library.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Migration.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Options.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Package.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Patterns/PatternUpdater.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Patterns/PatternsHelper.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Patterns/ProductUpdater.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Patterns/dictionary.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/Api.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/Integrations/AbstractPaymentMethodType.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/Integrations/BankTransfer.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/Integrations/CashOnDelivery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/Integrations/Cheque.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/Integrations/PayPal.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/PaymentMethodRegistry.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Payments/PaymentMethodTypeInterface.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Registry/AbstractDependencyType.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Registry/Container.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Registry/FactoryType.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Registry/SharedType.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Shipping/PickupLocation.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Shipping/ShippingController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Authentication.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/InvalidCartException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/InvalidStockLevelsInCartException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/NotPurchasableException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/OutOfStockException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/PartialOutOfStockException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/RouteException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/StockAvailabilityException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Exceptions/TooManyInCartException.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Formatters.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Formatters/CurrencyFormatter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Formatters/DefaultFormatter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Formatters/FormatterInterface.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Formatters/HtmlFormatter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Formatters/MoneyFormatter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Legacy.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Payments/PaymentContext.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Payments/PaymentResult.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/RouteInterface.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AI/BusinessDescription.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AI/Images.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AI/Middleware.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AI/Patterns.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AI/Product.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AI/Products.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AbstractCartRoute.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AbstractRoute.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/AbstractTermsRoute.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/Batch.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/Cart.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartAddItem.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartApplyCoupon.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartCoupons.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartCouponsByCode.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartExtensions.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartItems.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartItemsByKey.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartRemoveCoupon.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartRemoveItem.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartSelectShippingRate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartUpdateCustomer.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CartUpdateItem.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/Checkout.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/CheckoutOrder.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/Order.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductAttributeTerms.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductAttributes.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductAttributesById.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductCategories.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductCategoriesById.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductCollectionData.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductReviews.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductTags.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/Products.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductsById.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Routes/V1/ProductsBySlug.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/RoutesController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/SchemaController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/ExtendSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/AI/BusinessDescriptionSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/AI/ImagesSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/AI/PatternsSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/AI/ProductSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/AI/ProductsSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/AbstractAddressSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/AbstractSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/BatchSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/BillingAddressSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartCouponSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartExtensionsSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartFeeSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartItemSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CartShippingRateSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CheckoutOrderSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/CheckoutSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ErrorSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ImageAttachmentSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ItemSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/OrderCouponSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/OrderFeeSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/OrderItemSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/OrderSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ProductAttributeSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ProductCategorySchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ProductCollectionDataSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ProductReviewSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ProductSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/ShippingAddressSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Schemas/V1/TermSchema.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/SessionHandler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/StoreApi.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/ArrayUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/CartController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/CheckoutTrait.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/DraftOrderTrait.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/JsonWebToken.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/LocalPickupUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/NoticeHandler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/OrderAuthorizationTrait.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/OrderController.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/Pagination.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/ProductItemTrait.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/ProductQuery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/ProductQueryFilters.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/QuantityLimits.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/RateLimits.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/Utilities/ValidationUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/deprecated.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/StoreApi/functions.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/AbstractPageTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/AbstractTemplateCompatibility.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/ArchiveProductTemplatesCompatibility.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/CartTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/CheckoutHeaderTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/CheckoutTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/ClassicTemplatesCompatibility.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/MiniCartTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/OrderConfirmationTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/ProductAttributeTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/ProductSearchResultsTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/SingleProductTemplate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Templates/SingleProductTemplateCompatibility.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/BlockTemplateMigrationUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/BlockTemplateUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/BlocksWpQuery.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/CartCheckoutUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/MiniCartUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/ProductCollectionUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/ProductGalleryUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/StyleAttributesUtils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/src/Utils/Utils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/emails/customer-new-account-blocks.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/emails/plain/customer-new-account-blocks.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/notices/error.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/notices/notice.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/notices/success.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/parts/checkout-header.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/parts/mini-cart.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/parts/product-gallery.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/archive-product.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/archive-product.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/order-confirmation.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/page-cart.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/page-checkout.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/product-search-results.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/single-product.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/taxonomy-product_attribute.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/taxonomy-product_cat.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/blockified/taxonomy-product_tag.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/order-confirmation.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/page-cart.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/page-checkout.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/product-search-results.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/single-product.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/taxonomy-product_attribute.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/taxonomy-product_cat.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/templates/templates/taxonomy-product_tag.html
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/autoload.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/autoload_packages.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-a8c-mc-stats/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-admin-ui/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/AutoloadFileWriter.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/AutoloadGenerator.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/AutoloadProcessor.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/ManifestGenerator.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/autoload.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-autoloader-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-autoloader-locator.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-autoloader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-container.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-hook-manager.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-latest-autoloader-guard.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-manifest-reader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-path-processor.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-php-autoloader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-plugin-locator.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-plugins-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-shutdown-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-version-loader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-autoloader/src/class-version-selector.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-config/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-config/src/class-config.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/dist/tracks-ajax.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/dist/tracks-ajax.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/dist/tracks-callables.asset.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/dist/tracks-callables.js
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-client.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-connection-notice.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-error-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-heartbeat.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-initial-state.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-manager.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-nonce-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-package-version-tracker.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-package-version.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-plugin-storage.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-plugin.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-rest-authentication.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-rest-connector.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-secrets.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-server-sandbox.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-terms-of-service.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-tokens-locks.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-tokens.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-tracking.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-urls.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-utils.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-webhooks.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/interface-manager.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-constants/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-constants/src/class-constants.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-redirect/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-redirect/src/class-redirect.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-roles/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-roles/src/class-roles.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/LICENSE.txt
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-cache.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-cookiestate.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-errors.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-files.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-host.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-modules.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-paths.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-status.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/automattic/jetpack-status/src/class-visitor.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/ClassLoader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/InstalledVersions.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/LICENSE
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/autoload_classmap.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/autoload_files.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/autoload_namespaces.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/autoload_psr4.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/autoload_real.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/autoload_static.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installed.json
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installed.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/LICENSE
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/phpstan.neon.dist
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/AglInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/CraftInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/GravInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/Installer.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MiaoxingInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/Plugin.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ProcessWireInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/StarbugInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/WinterInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/installers/src/bootstrap.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/jetpack_autoload_classmap.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/jetpack_autoload_filemap.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/composer/jetpack_autoload_psr4.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-autoloader-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-autoloader-locator.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-autoloader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-container.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-hook-manager.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-latest-autoloader-guard.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-manifest-reader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-path-processor.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-php-autoloader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-plugin-locator.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-plugins-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-shutdown-handler.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-version-loader.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/vendor/jetpack-autoloader/class-version-selector.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/woocommerce-gutenberg-products-block.php
delete mode 100644 wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/wp-cli.yml
delete mode 100644 wp/wp-content/plugins/woocommerce/src/Internal/Admin/Logging/FileV2/ListTable.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/admin/roles/class-role-manager-vip.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/academy-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/academy-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/academy-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/academy-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{academy-2180-rtl.css => academy-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{academy-2180.css => academy-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/admin-global-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/admin-global-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/admin-global-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/admin-global-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{admin-global-2180-rtl.css => admin-global-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{admin-global-2180.css => admin-global-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/adminbar-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/adminbar-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/adminbar-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/adminbar-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{adminbar-2180-rtl.css => adminbar-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{adminbar-2180.css => adminbar-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/ai-generator-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/ai-generator-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/ai-generator-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/ai-generator-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{ai-generator-2180-rtl.css => ai-generator-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{ai-generator-2180.css => ai-generator-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/alerts-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/alerts-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/alerts-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/alerts-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{alerts-2180-rtl.css => alerts-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{alerts-2180.css => alerts-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/black-friday-banner-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/black-friday-banner-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/black-friday-banner-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/black-friday-banner-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{black-friday-banner-2180-rtl.css => black-friday-banner-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{black-friday-banner-2180.css => black-friday-banner-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/dashboard-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/dashboard-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/dashboard-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/dashboard-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{dashboard-2180-rtl.css => dashboard-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{dashboard-2180.css => dashboard-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/edit-page-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/edit-page-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/edit-page-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/edit-page-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{edit-page-2180-rtl.css => edit-page-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{edit-page-2180.css => edit-page-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/elementor-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/elementor-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/elementor-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/elementor-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{elementor-2180-rtl.css => elementor-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{elementor-2180.css => elementor-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/featured-image-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/featured-image-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/featured-image-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/featured-image-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{featured-image-2180-rtl.css => featured-image-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{featured-image-2180.css => featured-image-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/filter-explanation-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/filter-explanation-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/filter-explanation-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/filter-explanation-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{filter-explanation-2180-rtl.css => filter-explanation-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{filter-explanation-2180.css => filter-explanation-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/first-time-configuration-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/first-time-configuration-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/first-time-configuration-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/first-time-configuration-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{first-time-configuration-2180-rtl.css => first-time-configuration-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{first-time-configuration-2180.css => first-time-configuration-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/icons-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/icons-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/icons-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/icons-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{icons-2180-rtl.css => icons-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{icons-2180.css => icons-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/inside-editor-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/inside-editor-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/inside-editor-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/inside-editor-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{inside-editor-2180-rtl.css => inside-editor-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{inside-editor-2180.css => inside-editor-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/introductions-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/introductions-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/introductions-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/introductions-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{introductions-2180-rtl.css => introductions-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{introductions-2180.css => introductions-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-2180-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-2180.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-2181.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{metabox-2190-rtl.css => metabox-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{metabox-2190.css => metabox-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-primary-category-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-primary-category-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-primary-category-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/metabox-primary-category-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{metabox-primary-category-2180-rtl.css => metabox-primary-category-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{metabox-primary-category-2180.css => metabox-primary-category-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/modal-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/modal-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/modal-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/modal-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{modal-2180-rtl.css => modal-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{modal-2180.css => modal-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/monorepo-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/monorepo-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/monorepo-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/monorepo-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{monorepo-2180-rtl.css => monorepo-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{monorepo-2180.css => monorepo-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/new-settings-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/new-settings-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/new-settings-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/new-settings-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{new-settings-2180-rtl.css => new-settings-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{new-settings-2180.css => new-settings-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/notifications-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/notifications-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/notifications-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/notifications-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{notifications-2180-rtl.css => notifications-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{notifications-2180.css => notifications-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/score_icon-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/score_icon-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/score_icon-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/score_icon-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{score_icon-2180-rtl.css => score_icon-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{score_icon-2180.css => score_icon-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/structured-data-blocks-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/structured-data-blocks-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/structured-data-blocks-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/structured-data-blocks-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{structured-data-blocks-2180-rtl.css => structured-data-blocks-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{structured-data-blocks-2180.css => structured-data-blocks-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/support-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/support-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/support-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/support-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{support-2180-rtl.css => support-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{support-2180.css => support-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tailwind-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tailwind-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tailwind-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tailwind-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{tailwind-2180-rtl.css => tailwind-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{tailwind-2180.css => tailwind-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/toggle-switch-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/toggle-switch-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/toggle-switch-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/toggle-switch-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{toggle-switch-2180-rtl.css => toggle-switch-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{toggle-switch-2180.css => toggle-switch-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tooltips-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tooltips-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tooltips-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/tooltips-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{tooltips-2180-rtl.css => tooltips-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{tooltips-2180.css => tooltips-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/workouts-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/workouts-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/workouts-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/workouts-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{workouts-2180-rtl.css => workouts-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{workouts-2180.css => workouts-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/wpseo-dismissible-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/wpseo-dismissible-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/wpseo-dismissible-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/wpseo-dismissible-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{wpseo-dismissible-2180-rtl.css => wpseo-dismissible-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{wpseo-dismissible-2180.css => wpseo-dismissible-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yoast-extensions-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yoast-extensions-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yoast-extensions-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yoast-extensions-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{yoast-extensions-2180-rtl.css => yoast-extensions-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{yoast-extensions-2180.css => yoast-extensions-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_plugin_tools-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_plugin_tools-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_plugin_tools-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_plugin_tools-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{yst_plugin_tools-2180-rtl.css => yst_plugin_tools-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{yst_plugin_tools-2180.css => yst_plugin_tools-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_seo_score-2181-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_seo_score-2181.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_seo_score-2190-rtl.css
delete mode 100644 wp/wp-content/plugins/wordpress-seo/css/dist/yst_seo_score-2190.css
rename wp/wp-content/plugins/wordpress-seo/css/dist/{yst_seo_score-2180-rtl.css => yst_seo_score-2191-rtl.css} (100%)
rename wp/wp-content/plugins/wordpress-seo/css/dist/{yst_seo_score-2180.css => yst_seo_score-2191.css} (100%)
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/i18n/i18n-v3.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/src/conditionals/the-events-calendar-conditional.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/src/conditionals/third-party/coauthors-plus-activated-conditional.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/src/conditionals/third-party/coauthors-plus-flag-conditional.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/src/generators/schema/third-party/coauthor.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/src/generators/schema/third-party/events-calendar-schema.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/src/integrations/third-party/coauthors-plus.php
delete mode 100644 wp/wp-content/plugins/wordpress-seo/src/deprecated/src/integrations/third-party/the-events-calendar.php
diff --git a/wp/wp-content/plugins/search-filter-divi/README.txt b/wp/wp-content/plugins/search-filter-divi/README.txt
index d88a7bb5..9aca58a2 100644
--- a/wp/wp-content/plugins/search-filter-divi/README.txt
+++ b/wp/wp-content/plugins/search-filter-divi/README.txt
@@ -2,9 +2,9 @@
Contributors: CodeAmp
Donate link:
Tags: posts, custom posts, products, category, filter, taxonomy, post meta, custom fields, search, wordpress, post type, post date, author
-Requires at least: 4.0
-Tested up to: 5.4
-Stable tag: 1.0.7
+Requires at least: 6.0
+Tested up to: 6.4
+Stable tag: 1.0.8
A bridge Plugin enabling easy integration of the Divi Blog, Portfolio and Shop modules with Search & Filter Pro
@@ -41,6 +41,9 @@ A bridge Plugin enabling easy integration of the Divi Blog, Portfolio and Shop m
== Changelog ==
+= 1.0.8 =
+* Fix - a PHP 8 compatibility issue
+
= 1.0.7 =
* Fix - an with our search form no longer showing up in the Divi Builder
diff --git a/wp/wp-content/plugins/search-filter-divi/includes/search-filter-divi-extension.php b/wp/wp-content/plugins/search-filter-divi/includes/search-filter-divi-extension.php
index cdb876dc..eddd1b54 100644
--- a/wp/wp-content/plugins/search-filter-divi/includes/search-filter-divi-extension.php
+++ b/wp/wp-content/plugins/search-filter-divi/includes/search-filter-divi-extension.php
@@ -27,7 +27,23 @@ class Search_Filter_Divi_Extension extends DiviExtension {
*
* @var string
*/
- public $version = '1.0.7';
+ public $version = '1.0.8';
+
+ /**
+ * Plugin dir
+ *
+ * @since 1.0.0
+ * @var string
+ */
+ public $plugin_dir = '';
+
+ /**
+ * Plugin dir url
+ *
+ * @since 1.0.0
+ * @var string
+ */
+ public $plugin_dir_url = '';
/**
* Search_Filter_Divi_Extension constructor.
@@ -40,7 +56,6 @@ class Search_Filter_Divi_Extension extends DiviExtension {
$this->plugin_dir_url = plugin_dir_url( $this->plugin_dir );
parent::__construct( $name, $args );
-
}
}
diff --git a/wp/wp-content/plugins/search-filter-divi/search-filter-divi-plugin-updater.php b/wp/wp-content/plugins/search-filter-divi/search-filter-divi-plugin-updater.php
index 4470e7c2..fda396ef 100644
--- a/wp/wp-content/plugins/search-filter-divi/search-filter-divi-plugin-updater.php
+++ b/wp/wp-content/plugins/search-filter-divi/search-filter-divi-plugin-updater.php
@@ -18,7 +18,8 @@ class Search_Filter_Divi_Plugin_Updater {
private $version = '';
private $wp_override = false;
private $cache_key = '';
-
+ private $beta = false;
+
private $health_check_timeout = 5;
/**
diff --git a/wp/wp-content/plugins/search-filter-divi/search-filter-divi.php b/wp/wp-content/plugins/search-filter-divi/search-filter-divi.php
index 10bb5ebb..2a06141d 100644
--- a/wp/wp-content/plugins/search-filter-divi/search-filter-divi.php
+++ b/wp/wp-content/plugins/search-filter-divi/search-filter-divi.php
@@ -3,7 +3,7 @@
* Plugin Name: Search & Filter Pro - Divi Extension
* Plugin URI: https://searchandfilter.com
* Description: A bridge Plugin enabling easy integration of the Divi Blog, Portfolio and Shop modules with Search & Filter Pro
- * Version: 1.0.7
+ * Version: 1.0.8
* Author: Code Amp
* Author URI: https://www.codeamp.com
* Text Domain: search-filter-divi
@@ -28,7 +28,7 @@ if ( ! defined( 'SEARCH_FILTER_DIVI_URL' ) ) {
Class Search_Filter_Divi {
- const VERSION = '1.0.7';
+ const VERSION = '1.0.8';
const PLUGIN_UPDATE_URL = 'https://searchandfilter.com';
const PLUGIN_UPDATE_ID = 197854;
diff --git a/wp/wp-content/plugins/search-filter-pro/README.txt b/wp/wp-content/plugins/search-filter-pro/README.txt
index 6cb8f849..7b752fb5 100644
--- a/wp/wp-content/plugins/search-filter-pro/README.txt
+++ b/wp/wp-content/plugins/search-filter-pro/README.txt
@@ -3,8 +3,8 @@ Contributors: DesignsAndCode, CodeAmp
Donate link:
Tags: posts, custom posts, products, category, filter, taxonomy, post meta, custom fields, search, wordpress, post type, post date, author
Requires at least: 5.1
-Tested up to: 6.0
-Stable tag: 2.5.16
+Tested up to: 6.4
+Stable tag: 2.5.17
Search and Filtering for posts, products and custom posts. Allow your users to Search & Filter by taxonomies, custom fields and more.
@@ -57,6 +57,10 @@ Great for searching in your online shop, tested with: WooCommerce and WP eCommer
== Changelog ==
+= 2.5.17 =
+* Fix - Deprecated issues and compatibility with PHP 8.2
+* Fix - an issue with negative number ranges not working in some scenarios
+
= 2.5.16 =
* Fix - an issue with our pagination functions causing fatal errors.
diff --git a/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-post-cache.php b/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-post-cache.php
index a726c044..0303e31d 100644
--- a/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-post-cache.php
+++ b/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-post-cache.php
@@ -28,6 +28,9 @@ class Search_Filter_Post_Cache {
private $posts_updated = array();
private $context = 'none';
+ private $cached_search_form_settings = array();
+ private $cached_search_form_fields = array();
+
private $cache_table_name = '';
private $term_results_table_name = '';
diff --git a/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-third-party.php b/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-third-party.php
index 8e8f18be..0c72ef5f 100644
--- a/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-third-party.php
+++ b/wp/wp-content/plugins/search-filter-pro/includes/class-search-filter-third-party.php
@@ -27,6 +27,7 @@ class Search_Filter_Third_Party {
private $sfid = 0;
public $cache_table_name;
+ private $woocommerce;
public function __construct() {
global $wpdb;
diff --git a/wp/wp-content/plugins/search-filter-pro/includes/third-party/class-search-filter-translatepress.php b/wp/wp-content/plugins/search-filter-pro/includes/third-party/class-search-filter-translatepress.php
new file mode 100644
index 00000000..f5f683b6
--- /dev/null
+++ b/wp/wp-content/plugins/search-filter-pro/includes/third-party/class-search-filter-translatepress.php
@@ -0,0 +1,58 @@
+get( $sfid );
+
+ global $TRP_LANGUAGE;
+ $trp = TRP_Translate_Press::get_trp_instance();
+ $trp_settings = $trp->get_component( 'settings' );
+ $settings = $trp_settings->get_settings();
+
+ if ( $TRP_LANGUAGE !== $settings['default-language'] ) {
+ $trp_search = $trp->get_component( 'search' );
+ $search_result_ids = $trp_search->get_post_ids_containing_search_term( $query_args['s'], null );
+ add_filter( 'trp_force_search', '__return_true' );
+ if ( ! empty( $search_result_ids ) ) {
+ return $search_result_ids;
+ }
+ }
+
+ return array( false ); // this tells S&F to ignore this custom filter
+ }
+}
diff --git a/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-active-query.php b/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-active-query.php
index 34671255..5de77a4c 100644
--- a/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-active-query.php
+++ b/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-active-query.php
@@ -26,6 +26,8 @@ class Search_Filter_Active_Query {
private $form_settings;
private $field_values;
+ private $searchterm = '';
+
public function __construct( $plugin_slug, $sfid, $settings, $fields ) {
global $wpdb;
diff --git a/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-cache.php b/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-cache.php
index cd855047..5f4d8e4a 100644
--- a/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-cache.php
+++ b/wp/wp-content/plugins/search-filter-pro/public/includes/class-search-filter-cache.php
@@ -1132,6 +1132,8 @@ class Search_Filter_Cache {
$cast_type = 'UNSIGNED';
}
} else {
+ $cast_type = 'SIGNED';
+
$min_value = (float) $filter['active_values'][0];
$max_value = (float) $filter['active_values'][1];
diff --git a/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_date.php b/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_date.php
index 616bc07e..c2c294d5 100644
--- a/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_date.php
+++ b/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_date.php
@@ -15,6 +15,10 @@ if ( ! defined( 'ABSPATH' ) ) {
class Search_Filter_Field_Post_Meta_Date {
+ private $plugin_slug;
+ private $sfid;
+ private $create_input;
+
public function __construct( $plugin_slug, $sfid ) {
$this->plugin_slug = $plugin_slug;
diff --git a/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_number.php b/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_number.php
index c89b3b4a..c941f919 100644
--- a/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_number.php
+++ b/wp/wp-content/plugins/search-filter-pro/public/includes/fields/post_meta_number.php
@@ -15,8 +15,11 @@ if ( ! defined( 'ABSPATH' ) ) {
class Search_Filter_Field_Post_Meta_Number {
-
+ private $plugin_slug;
+ private $sfid;
+ private $create_input;
private $use_transients = false;
+
public function __construct( $plugin_slug, $sfid ) {
$this->plugin_slug = $plugin_slug;
$this->sfid = $sfid;
@@ -370,8 +373,6 @@ class Search_Filter_Field_Post_Meta_Number {
global $searchandfilter;
$searchform = $searchandfilter->get( $this->sfid );
- $this->auto_count = $searchform->settings( 'enable_auto_count' );
- $this->auto_count_deselect_emtpy = $searchform->settings( 'auto_count_deselect_emtpy' );
$min = $args['min'];
$max = $args['max'];
@@ -444,8 +445,6 @@ class Search_Filter_Field_Post_Meta_Number {
global $searchandfilter;
$searchform = $searchandfilter->get( $this->sfid );
- $this->auto_count = $searchform->settings( 'enable_auto_count' );
- $this->auto_count_deselect_emtpy = $searchform->settings( 'auto_count_deselect_emtpy' );
$min = $args['min'];
$max = $args['max'];
diff --git a/wp/wp-content/plugins/search-filter-pro/search-filter-pro.php b/wp/wp-content/plugins/search-filter-pro/search-filter-pro.php
index cb84969e..eff74637 100644
--- a/wp/wp-content/plugins/search-filter-pro/search-filter-pro.php
+++ b/wp/wp-content/plugins/search-filter-pro/search-filter-pro.php
@@ -11,13 +11,18 @@
* Plugin Name: Search & Filter Pro
* Plugin URI: https://searchandfilter.com
* Description: Search & Filtering for posts, products and custom posts. Allow your users to Search & Filter by categories, tags, taxonomies, custom fields, post meta, post dates, post types and authors.
- * Version: 2.5.16
+ * Version: 2.5.17
* Author: Code Amp
* Author URI: http://www.codeamp.com
+ * Developer: Code Amp
+ * Developer URI: http://www.codeamp.com
* Text Domain: search-filter
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
* Domain Path: /languages
+ *
+ * WC requires at least: 7.0
+ * WC tested up to: 8.3
*/
// If this file is called directly, abort.
@@ -33,7 +38,7 @@ if ( ! defined( 'SEARCH_FILTER_QUERY_DEBUG' ) ) {
}
if ( ! defined( 'SEARCH_FILTER_VERSION' ) ) {
- define( 'SEARCH_FILTER_VERSION', '2.5.16' );
+ define( 'SEARCH_FILTER_VERSION', '2.5.17' );
}
if ( ! defined( 'SEARCH_FILTER_PRO_BASE_PATH' ) ) {
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/506499ddac13811fee8e.svg b/wp/wp-content/plugins/woocommerce/assets/client/admin/506499ddac13811fee8e.svg
deleted file mode 100644
index c8639363..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/506499ddac13811fee8e.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js
deleted file mode 100644
index 2846c1c4..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 4239.js.LICENSE.txt */
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[4239],{87983:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(69307),o=n(70444);const s=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{d:"M4 20h8v-1.5H4V20zM18.9 3.5c-.6-.6-1.5-.6-2.1 0l-7.2 7.2c-.4-.1-.7 0-1.1.1-.5.2-1.5.7-1.9 2.2-.4 1.7-.8 2.2-1.1 2.7-.1.1-.2.3-.3.4l-.6 1.1H6c2 0 3.4-.4 4.7-1.4.8-.6 1.2-1.4 1.3-2.3 0-.3 0-.5-.1-.7L19 5.7c.5-.6.5-1.6-.1-2.2zM9.7 14.7c-.7.5-1.5.8-2.4 1 .2-.5.5-1.2.8-2.3.2-.6.4-1 .8-1.1.5-.1 1 .1 1.3.3.2.2.3.5.2.8 0 .3-.1.9-.7 1.3z"}))},58358:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(69307),o=n(70444);const s=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{d:"M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"}))},26184:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(69307),o=n(70444);const s=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{fillRule:"evenodd",d:"M6.863 13.644L5 13.25h-.5a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5H5L18 6.5h2V16h-2l-3.854-.815.026.008a3.75 3.75 0 01-7.31-1.549zm1.477.313a2.251 2.251 0 004.356.921l-4.356-.921zm-2.84-3.28L18.157 8h.343v6.5h-.343L5.5 11.823v-1.146z",clipRule:"evenodd"}))},49704:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(69307),o=n(70444);const s=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{fillRule:"evenodd",d:"M5.5 9.5v-2h13v2h-13zm0 3v4h13v-4h-13zM4 7a1 1 0 011-1h14a1 1 0 011 1v10a1 1 0 01-1 1H5a1 1 0 01-1-1V7z",clipRule:"evenodd"}))},92486:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(69307),o=n(70444);const s=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{d:"M20.1 5.1L16.9 2 6.2 12.7l-1.3 4.4 4.5-1.3L20.1 5.1zM4 20.8h8v-1.5H4v1.5z"}))},25918:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(69307),o=n(70444);const s=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{fillRule:"evenodd",d:"M6.5 8a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zM8 5a3 3 0 100 6 3 3 0 000-6zm6.5 11a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm1.5-3a3 3 0 100 6 3 3 0 000-6zM5.47 17.41a.75.75 0 001.06 1.06L18.47 6.53a.75.75 0 10-1.06-1.06L5.47 17.41z",clipRule:"evenodd"}))},6520:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(69307),o=n(70444);const s=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{d:"M3 6.75C3 5.784 3.784 5 4.75 5H15V7.313l.05.027 5.056 2.73.394.212v3.468a1.75 1.75 0 01-1.75 1.75h-.012a2.5 2.5 0 11-4.975 0H9.737a2.5 2.5 0 11-4.975 0H3V6.75zM13.5 14V6.5H4.75a.25.25 0 00-.25.25V14h.965a2.493 2.493 0 011.785-.75c.7 0 1.332.287 1.785.75H13.5zm4.535 0h.715a.25.25 0 00.25-.25v-2.573l-4-2.16v4.568a2.487 2.487 0 011.25-.335c.7 0 1.332.287 1.785.75zM6.282 15.5a1.002 1.002 0 00.968 1.25 1 1 0 10-.968-1.25zm9 0a1 1 0 101.937.498 1 1 0 00-1.938-.498z"}))},54989:(e,t,n)=>{t.Z=function(e){var t=e.size,n=void 0===t?24:t,r=e.onClick,l=(e.icon,e.className),a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},s=Object.keys(e);for(r=0;r{t.Z=function(e){var t=e.size,n=void 0===t?24:t,r=e.onClick,l=(e.icon,e.className),a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},s=Object.keys(e);for(r=0;r{n.d(t,{tv:()=>M});var r,o=n(99196),s=n.n(o),i=Object.defineProperty,l=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,c=(e,t,n)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;(e=>{const t=class{constructor(e,n,r,o){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],et.MAX_VERSION)throw new RangeError("Version value out of range");if(o<-1||o>7)throw new RangeError("Mask value out of range");this.size=4*e+17;let i=[];for(let e=0;e7)throw new RangeError("Invalid value");let c,u;for(c=o;;c++){const r=8*t.getNumDataCodewords(c,n),o=l.getTotalBits(e,c);if(o<=r){u=o;break}if(c>=i)throw new RangeError("Data too long")}for(const e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])h&&u<=8*t.getNumDataCodewords(c,e)&&(n=e);let d=[];for(const t of e){r(t.mode.modeBits,4,d),r(t.numChars,t.mode.numCharCountBits(c),d);for(const e of t.getData())d.push(e)}s(d.length==u);const f=8*t.getNumDataCodewords(c,n);s(d.length<=f),r(0,Math.min(4,f-d.length),d),r(0,(8-d.length%8)%8,d),s(d.length%8==0);for(let e=236;d.lengthm[t>>>3]|=e<<7-(7&t))),new t(c,n,m,a)}getModule(e,t){return 0<=e&&e>>9);const r=21522^(t<<10|n);s(r>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,o(r,e));this.setFunctionModule(8,7,o(r,6)),this.setFunctionModule(8,8,o(r,7)),this.setFunctionModule(7,8,o(r,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,o(r,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,o(r,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,o(r,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^7973*(e>>>11);const t=this.version<<12|e;s(t>>>18==0);for(let e=0;e<18;e++){const n=o(t,e),r=this.size-11+e%3,s=Math.floor(e/3);this.setFunctionModule(r,s,n),this.setFunctionModule(s,r,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){const o=Math.max(Math.abs(r),Math.abs(n)),s=e+r,i=t+n;0<=s&&s{(e!=h-i||n>=a)&&d.push(t[e])}));return s(d.length==l),d}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let t=this.size-1;t>=1;t-=2){6==t&&(t=5);for(let r=0;r>>3],7-(7&n)),n++)}}s(n==8*e.length)}applyMask(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(let t=0;t5&&e++):(this.finderPenaltyAddHistory(o,s),r||(e+=this.finderPenaltyCountPatterns(s)*t.PENALTY_N3),r=this.modules[n][i],o=1);e+=this.finderPenaltyTerminateAndCount(r,o,s)*t.PENALTY_N3}for(let n=0;n5&&e++):(this.finderPenaltyAddHistory(o,s),r||(e+=this.finderPenaltyCountPatterns(s)*t.PENALTY_N3),r=this.modules[i][n],o=1);e+=this.finderPenaltyTerminateAndCount(r,o,s)*t.PENALTY_N3}for(let n=0;ne+(t?1:0)),n);const r=this.size*this.size,o=Math.ceil(Math.abs(20*n-10*r)/r)-1;return s(0<=o&&o<=9),e+=o*t.PENALTY_N4,s(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(1==this.version)return[];{const e=Math.floor(this.version/7)+2,t=32==this.version?26:2*Math.ceil((4*this.version+4)/(2*e-2));let n=[6];for(let r=this.size-7;n.lengtht.MAX_VERSION)throw new RangeError("Version number out of range");let n=(16*e+128)*e+64;if(e>=2){const t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return s(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw new RangeError("Degree out of range");let n=[];for(let t=0;t0));for(const o of e){const e=o^r.shift();r.push(0),n.forEach(((n,o)=>r[o]^=t.reedSolomonMultiply(n,e)))}return r}static reedSolomonMultiply(e,t){if(e>>>8!=0||t>>>8!=0)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^285*(n>>>7),n^=(t>>>r&1)*e;return s(n>>>8==0),n}finderPenaltyCountPatterns(e){const t=e[1];s(t<=3*this.size);const n=t>0&&e[2]==t&&e[3]==3*t&&e[4]==t&&e[5]==t;return(n&&e[0]>=4*t&&e[6]>=t?1:0)+(n&&e[6]>=4*t&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){0==t[0]&&(e+=this.size),t.pop(),t.unshift(e)}};let n=t;function r(e,t,n){if(t<0||t>31||e>>>t!=0)throw new RangeError("Value out of range");for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function o(e,t){return 0!=(e>>>t&1)}function s(e){if(!e)throw new Error("Assertion error")}n.MIN_VERSION=1,n.MAX_VERSION=40,n.PENALTY_N1=3,n.PENALTY_N2=3,n.PENALTY_N3=40,n.PENALTY_N4=10,n.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],n.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=n;const i=class{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw new RangeError("Invalid argument");this.bitData=n.slice()}static makeBytes(e){let t=[];for(const n of e)r(n,8,t);return new i(i.Mode.BYTE,e.length,t)}static makeNumeric(e){if(!i.isNumeric(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n=1<{let t;(e=>{const t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};let n=t;n.LOW=new t(0,1),n.MEDIUM=new t(1,0),n.QUARTILE=new t(2,3),n.HIGH=new t(3,2),e.Ecc=n})(t=e.QrCode||(e.QrCode={}))})(r||(r={})),(e=>{let t;(e=>{const t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};let n=t;n.NUMERIC=new t(1,[10,12,14]),n.ALPHANUMERIC=new t(2,[9,11,13]),n.BYTE=new t(4,[8,16,16]),n.KANJI=new t(8,[8,10,12]),n.ECI=new t(7,[0,0,0]),e.Mode=n})(t=e.QrSegment||(e.QrSegment={}))})(r||(r={}));var u=r,d={L:u.QrCode.Ecc.LOW,M:u.QrCode.Ecc.MEDIUM,Q:u.QrCode.Ecc.QUARTILE,H:u.QrCode.Ecc.HIGH},f=128,m="L",g="#FFFFFF",w="#000000",E=!1;function M(e){const t=e,{value:n,size:r=f,level:o=m,bgColor:i=g,fgColor:M=w,includeMargin:v=E,imageSettings:p}=t,C=((e,t)=>{var n={};for(var r in e)a.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&l)for(var r of l(e))t.indexOf(r)<0&&h.call(e,r)&&(n[r]=e[r]);return n})(t,["value","size","level","bgColor","fgColor","includeMargin","imageSettings"]);let R=u.QrCode.encodeText(n,d[o]).getModules();const N=v?4:0,P=R.length+2*N,y=function(e,t,n,r){if(null==r)return null;const o=n?4:0,s=e.length+2*o,i=Math.floor(.1*t),l=s/t,a=(r.width||i)*l,h=(r.height||i)*l,c=null==r.x?e.length/2-a/2:r.x*l,u=null==r.y?e.length/2-h/2:r.y*l;let d=null;if(r.excavate){let e=Math.floor(c),t=Math.floor(u);d={x:e,y:t,w:Math.ceil(a+c-e),h:Math.ceil(h+u-t)}}return{x:c,y:u,h,w:a,excavation:d}}(R,r,v,p);let A=null;var z,O;null!=p&&null!=y&&(null!=y.excavation&&(z=R,O=y.excavation,R=z.slice().map(((e,t)=>t=O.y+O.h?e:e.map(((e,t)=>(t=O.x+O.w)&&e))))),A=s().createElement("image",{xlinkHref:p.src,height:y.h,width:y.w,x:y.x+N,y:y.y+N,preserveAspectRatio:"none"}));const b=function(e,t=0){const n=[];return e.forEach((function(e,r){let o=null;e.forEach((function(s,i){if(!s&&null!==o)return n.push(`M${o+t} ${r+t}h${i-o}v1H${o+t}z`),void(o=null);if(i!==e.length-1)s&&null===o&&(o=i);else{if(!s)return;null===o?n.push(`M${i+t},${r+t} h1v1H${i+t}z`):n.push(`M${o+t},${r+t} h${i+1-o}v1H${o+t}z`)}}))})),n.join("")}(R,N);return s().createElement("svg",((e,t)=>{for(var n in t||(t={}))a.call(t,n)&&c(e,n,t[n]);if(l)for(var n of l(t))h.call(t,n)&&c(e,n,t[n]);return e})({height:r,width:r,viewBox:`0 0 ${P} ${P}`},C),s().createElement("path",{fill:i,d:`M0,0 h${P}v${P}H0z`,shapeRendering:"crispEdges"}),s().createElement("path",{fill:M,d:b,shapeRendering:"crispEdges"}),A)}!function(){try{(new Path2D).addPath(new Path2D)}catch(e){return!1}}()}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js.LICENSE.txt b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js.LICENSE.txt
deleted file mode 100644
index 3e233360..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4239.js.LICENSE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
- * @license qrcode.react
- * Copyright (c) Paul O'Shannessy
- * SPDX-License-Identifier: ISC
- */
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4891.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4891.js
deleted file mode 100644
index 35693bb4..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4891.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[4891],{68589:(e,t,o)=>{o.d(t,{Z:()=>i});var r=o(69307),c=o(65736),a=o(55609),n=o(14812);const i=e=>{let{onCancel:t,onImport:o}=e;return(0,r.createElement)(a.Modal,{className:"woocommerce-products-load-sample-product-confirm-modal",overlayClassName:"woocommerce-products-load-sample-product-confirm-modal-overlay",title:(0,c.__)("Load sample products","woocommerce"),onRequestClose:t},(0,r.createElement)(n.Text,{className:"woocommerce-confirmation-modal__message"},(0,c.__)("We'll import images from Woo.com to set up your sample products.","woocommerce")),(0,r.createElement)("div",{className:"woocommerce-confirmation-modal-actions"},(0,r.createElement)(a.Button,{isSecondary:!0,onClick:t},(0,c.__)("Cancel","woocommerce")),(0,r.createElement)(a.Button,{isPrimary:!0,onClick:o},(0,c.__)("Import sample products","woocommerce"))))}},48451:(e,t,o)=>{o.d(t,{Z:()=>s});var r=o(69307),c=o(65736),a=o(55609),n=o(34928),i=o(14812);const s=()=>(0,r.createElement)(a.Modal,{className:"woocommerce-products-load-sample-product-modal",overlayClassName:"woocommerce-products-load-sample-product-modal-overlay",title:"",onRequestClose:()=>{}},(0,r.createElement)(n.Spinner,{color:"#007cba",size:48}),(0,r.createElement)(i.Text,{className:"woocommerce-load-sample-product-modal__title"},(0,c.__)("Loading sample products","woocommerce")),(0,r.createElement)(i.Text,{className:"woocommerce-load-sample-product-modal__description"},(0,c.__)("We are loading 9 sample products into your store","woocommerce")))},42896:(e,t,o)=>{o.d(t,{Z:()=>d});var r=o(65736),c=o(86989),a=o.n(c),n=o(67221),i=o(9818),s=o(69307),l=o(14599),m=o(31611);const d=e=>{let{redirectUrlAfterSuccess:t}=e;const[o,c]=(0,s.useState)(!1),{createNotice:d}=(0,i.useDispatch)("core/notices"),{recordCompletionTime:p}=(0,m.Z)("products");return{loadSampleProduct:async()=>{(0,l.recordEvent)("tasklist_add_product",{method:"sample_product"}),p(),c(!0);try{if(await a()({path:`${n.WC_ADMIN_NAMESPACE}/onboarding/tasks/import_sample_products`,method:"POST"}),t)return void(window.location.href=t)}catch(e){const t=e instanceof Error&&e.message?e.message:(0,r.__)("There was an error importing the sample products","woocommerce");d("error",t)}c(!1)},isLoadingSampleProducts:o}}},14891:(e,t,o)=>{o.r(t),o.d(t,{Products:()=>C});var r=o(69307),c=o(72456),a=o(98817),n=o(65736),i=o(23374),s=o(86241),l=o(73224),m=o(55609),d=o(74617),p=o(14599),u=o(25247),_=o(86020);const w=e=>{let{items:t}=e;return(0,r.createElement)("div",{className:"woocommerce-products-card-list"},(0,r.createElement)(_.List,{items:t}))};var h=o(3680);const k=[{key:"from-csv",title:(0,n.__)("FROM A CSV FILE","woocommerce"),content:(0,n.__)("Import all products at once by uploading a CSV file.","woocommerce"),before:(0,r.createElement)(h.Z,null),onClick:()=>{(0,p.recordEvent)("tasklist_add_product",{method:"import"}),window.location.href=(0,d.getAdminLink)("edit.php?post_type=product&page=product_importer&wc_onboarding_active_task=products")}}];var g=o(19460),v=o(70422),f=o(48451),y=o(42896),E=o(68589),b=o(31611);const C=()=>{const[e,t]=(0,r.useState)(!1),{recordCompletionTime:o}=(0,b.Z)("products"),[c,a]=(0,r.useState)(!1),_=(0,r.useMemo)((()=>k.map((e=>({...e,onClick:()=>{e.onClick(),o()}})))),[o]),{loadSampleProduct:h,isLoadingSampleProducts:C}=(0,y.Z)({redirectUrlAfterSuccess:(0,d.getAdminLink)("edit.php?post_type=product&wc_onboarding_active_task=products")}),{productTypes:Z}=(0,g.Z)((0,v.Q)({exclude:["subscription"]}),[],{onClick:o}),L=(0,r.createElement)(u.Z,{items:Z,onClickLoadSampleProduct:()=>a(!0)});return(0,r.createElement)("div",{className:"woocommerce-task-import-products"},(0,r.createElement)("h1",null,(0,n.__)("Import your products","woocommerce")),(0,r.createElement)(w,{items:_}),(0,r.createElement)("div",{className:"woocommerce-task-import-products-stacks"},(0,r.createElement)(m.Button,{onClick:()=>{(0,p.recordEvent)("tasklist_add_product_from_scratch_click"),t(!e)}},(0,n.__)("Or add your products from scratch","woocommerce"),(0,r.createElement)(i.Z,{icon:e?s.Z:l.Z})),e&&L),C?(0,r.createElement)(f.Z,null):c&&(0,r.createElement)(E.Z,{onCancel:()=>{a(!1),(0,p.recordEvent)("tasklist_cancel_load_sample_products_click")},onImport:()=>{a(!1),h()}}))};(0,a.registerPlugin)("wc-admin-onboarding-task-products",{scope:"woocommerce-tasks",render:()=>(0,r.createElement)(c.WooOnboardingTask,{id:"products"},(0,r.createElement)(C,null))})},25247:(e,t,o)=>{o.d(t,{Z:()=>d});var r=o(69307),c=o(65736),a=o(86020),n=o(14812),i=o(75283),s=o(74617),l=o(14599),m=o(31611);const d=e=>{let{items:t,onClickLoadSampleProduct:o,showOtherOptions:d=!0,isTaskListItemClicked:p=!1}=e;const{recordCompletionTime:u}=(0,m.Z)("products");return(0,r.createElement)("div",{className:"woocommerce-products-stack"},p&&(0,r.createElement)("div",{className:"woocommerce-stack__overlay-spinner"},(0,r.createElement)(a.Spinner,{className:"list-overlay"})),(0,r.createElement)(a.List,{items:t}),d&&(0,r.createElement)(n.Text,{className:"woocommerce-stack__other-options"},(0,i.Z)({mixedString:(0,c.__)("Can’t find your product type? {{sbLink}}Start Blank{{/sbLink}} or {{LspLink}}Load Sample Products{{/LspLink}} to see what they look like in your store.","woocommerce"),components:{sbLink:(0,r.createElement)(a.Link,{onClick:()=>((0,l.recordEvent)("tasklist_add_product",{method:"manually"}),u(),window.location.href=(0,s.getAdminLink)("post-new.php?post_type=product&wc_onboarding_active_task=products&tutorial=true"),!1),href:"",type:"wc-admin"},(0,r.createElement)(r.Fragment,null)),LspLink:(0,r.createElement)(a.Link,{href:"",type:"wc-admin",onClick:()=>(o(),!1)},(0,r.createElement)(r.Fragment,null))}})))}},19460:(e,t,o)=>{o.d(t,{Z:()=>u});var r=o(69307),c=o(14599),a=o(9818),n=o(67221),i=o(10431),s=o(74617),l=o(73516),m=o(34704),d=o(73463);const p=()=>{const{createProductFromTemplate:e}=(0,a.useDispatch)(n.ITEMS_STORE_NAME),[t,o]=(0,r.useState)(!1),c=window.wcAdminFeatures["new-product-management-experience"];return{createProductByType:async t=>{if("subscription"!==t){if(o(!0),"physical"===t||"variable"===t||"digital"===t){if(c)return void(0,i.navigateTo)({url:(0,i.getNewPath)({},"/add-product",{})});if("treatment"===(await(0,l.loadExperimentAssignment)("woocommerce_product_creation_experience_add_digital_202311_v1")).variationName){const e=(0,d.O3)("_feature_nonce");return void(window.location.href=(0,s.getAdminLink)(`post-new.php?post_type=product&product_block_editor=1&_feature_nonce=${e}`))}}try{const o=await e({template_name:t,status:"draft"},{_fields:["id"]});if(o&&o.id){const e=(0,s.getAdminLink)(`post.php?post=${o.id}&action=edit&wc_onboarding_active_task=products&tutorial=true`);return void(window.location.href=e)}throw new Error("Unexpected empty data response from server")}catch(e){(0,m.a)(e)}o(!1)}else window.location.href=(0,s.getAdminLink)("post-new.php?post_type=product&subscription_pointers=true")},isRequesting:t}},u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],{onClick:o}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{createProductByType:a,isRequesting:n}=p(),i=(0,r.useMemo)((()=>e.map((e=>({...e,onClick:()=>{a(e.key),(0,c.recordEvent)("tasklist_add_product",{method:"product_template"}),(0,c.recordEvent)("tasklist_product_template_selection",{product_type:e.key,is_suggested:t.includes(e.key)}),"function"==typeof o&&o()}})))),[a]);return{productTypes:i,isRequesting:n}}},70422:(e,t,o)=>{o.d(t,{Q:()=>h,r:()=>k});var r=o(92819),c=o(69307),a=o(65736),n=o(90391),i=o(96898),s=o(7480),l=o(48349),m=o(23374),d=o(83619);const p=Object.freeze([{key:"physical",title:(0,a.__)("Physical product","woocommerce"),content:(0,a.__)("A tangible item that gets delivered to customers.","woocommerce"),before:(0,c.createElement)(n.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"digital",title:(0,a.__)("Digital product","woocommerce"),content:(0,a.__)("A digital product like service, downloadable book, music or video.","woocommerce"),before:(0,c.createElement)(i.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"variable",title:(0,a.__)("Variable product","woocommerce"),content:(0,a.__)("A product with variations like color or size.","woocommerce"),before:(0,c.createElement)(s.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"subscription",title:(0,a.__)("Subscription product","woocommerce"),content:(0,a.__)("Item that customers receive on a regular basis.","woocommerce"),before:(0,c.createElement)(l.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"grouped",title:(0,a.__)("Grouped product","woocommerce"),content:(0,a.__)("A collection of related products.","woocommerce"),before:(0,c.createElement)((()=>(0,c.createElement)("svg",{width:"25",height:"24",viewBox:"0 0 25 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,c.createElement)("mask",{id:"mask0_1133_132667",style:{maskType:"alpha"},maskUnits:"userSpaceOnUse",x:"2",y:"2",width:"21",height:"20"},(0,c.createElement)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.5 2.34497L10.84 7.99497V3.65497H2.84003V11.655H10.84V7.99497L16.5 13.655H12.84V21.655H20.84V13.655H16.5L22.16 7.99497L16.5 2.34497ZM19.33 8.00497L16.5 5.17497L13.67 8.00497L16.5 10.835L19.33 8.00497ZM8.84003 9.65497V5.65497H4.84003V9.65497H8.84003ZM18.84 15.655V19.655H14.84V15.655H18.84ZM8.84003 19.655V15.655H4.84003V19.655H8.84003ZM2.84003 13.655H10.84V21.655H2.84003V13.655Z",fill:"white"})),(0,c.createElement)("g",{mask:"url(#mask0_1133_132667)"},(0,c.createElement)("rect",{x:"0.5",width:"24",height:"24"})))),null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"external",title:(0,a.__)("External product","woocommerce"),content:(0,a.__)("Link a product to an external website.","woocommerce"),before:(0,c.createElement)((()=>(0,c.createElement)("svg",{width:"25",height:"24",viewBox:"0 0 25 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,c.createElement)("mask",{id:"mask0_1133_132681",style:{maskType:"alpha"},maskUnits:"userSpaceOnUse",x:"2",y:"7",width:"21",height:"10"},(0,c.createElement)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.5 15H7.5C5.85 15 4.5 13.65 4.5 12C4.5 10.35 5.85 9 7.5 9H11.5V7H7.5C4.74 7 2.5 9.24 2.5 12C2.5 14.76 4.74 17 7.5 17H11.5V15ZM17.5 7H13.5V9H17.5C19.15 9 20.5 10.35 20.5 12C20.5 13.65 19.15 15 17.5 15H13.5V17H17.5C20.26 17 22.5 14.76 22.5 12C22.5 9.24 20.26 7 17.5 7ZM16.5 11H8.5V13H16.5V11Z",fill:"white"})),(0,c.createElement)("g",{mask:"url(#mask0_1133_132681)"},(0,c.createElement)("rect",{x:"0.5",width:"24",height:"24"})))),null),after:(0,c.createElement)(m.Z,{icon:d.Z})}]),u=((0,a.__)("can’t decide?","woocommerce"),(0,a.__)("Load sample products and see what they look like in your store.","woocommerce"),(0,c.createElement)((()=>(0,c.createElement)("svg",{width:"25",height:"24",viewBox:"0 0 25 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,c.createElement)("mask",{id:"mask0_1133_132689",style:{maskType:"alpha"},maskUnits:"userSpaceOnUse",x:"5",y:"2",width:"15",height:"20"},(0,c.createElement)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.5 2C8.64 2 5.5 5.14 5.5 9C5.5 11.38 6.69 13.47 8.5 14.74V17C8.5 17.55 8.95 18 9.5 18H15.5C16.05 18 16.5 17.55 16.5 17V14.74C18.31 13.47 19.5 11.38 19.5 9C19.5 5.14 16.36 2 12.5 2ZM9.5 21C9.5 21.55 9.95 22 10.5 22H14.5C15.05 22 15.5 21.55 15.5 21V20H9.5V21ZM14.5 13.7L15.35 13.1C16.7 12.16 17.5 10.63 17.5 9C17.5 6.24 15.26 4 12.5 4C9.74 4 7.5 6.24 7.5 9C7.5 10.63 8.3 12.16 9.65 13.1L10.5 13.7V16H14.5V13.7Z",fill:"white"})),(0,c.createElement)("g",{mask:"url(#mask0_1133_132689)"},(0,c.createElement)("rect",{x:"0.5",width:"24",height:"24",fill:"#757575"})))),null),(0,c.createElement)(m.Z,{icon:d.Z}),Object.freeze({physical:["physical","variable","grouped"],subscriptions:["subscription"],downloads:["digital"],"physical,subscriptions":["physical","subscription"],"downloads,physical":["physical","digital"],"downloads,subscriptions":["digital","subscription"],"downloads,physical,subscriptions":["physical","digital","subscription"]})),_=u.physical,w=["physical","subscriptions","downloads"],h=function(){let{exclude:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e&&(null==e?void 0:e.length)>0?p.filter((t=>!e.includes(t.key))):[...p]},k=e=>{const t=(0,r.intersection)(e,w).sort().join(",");return u.hasOwnProperty(t)?u[t]:_}},31611:(e,t,o)=>{o.d(t,{Z:()=>n});var r=o(69307),c=o(14599),a=o(34374);const n=(e,t)=>{const o=(0,r.useRef)(t||window.performance.now());return{recordCompletionTime:()=>{(0,c.recordEvent)("task_completion_time",{task_name:e,time:(0,a.Jm)(window.performance.now()-o.current)})}}}},3680:(e,t,o)=>{t.Z=function(e){var t=e.size,o=void 0===t?24:t,r=e.onClick,i=(e.icon,e.className),s=function(e,t){if(null==e)return{};var o,r,c=function(e,t){if(null==e)return{};var o,r,c={},a=Object.keys(e);for(r=0;r.woocommerce-list__item-inner{box-shadow:none}.woocommerce-products-card-list .woocommerce-list__item-text,.woocommerce-products-card-list .woocommerce-list__item-text .woocommerce-list__item-content{margin-top:16px}.woocommerce-products-card-list .woocommerce-list__item-before{margin-right:0;background:#f0f6fc;padding:8px;border-radius:50%}.woocommerce-products-card-list .woocommerce-list__item-title{color:#1e1e1e;line-height:16px;font-weight:600;text-transform:uppercase}.woocommerce-products-card-list .woocommerce-list__item-content{color:#757575;line-height:16px;font-weight:400}.woocommerce-products-card-list .woocommerce-list__item-content a{display:block;text-decoration:none;margin-top:8px}.woocommerce-products-card-list ul li:nth-child(2) .woocommerce-list__item-inner{padding:40px 17px 16px}.woocommerce-task-import-products{max-width:544px;margin:auto}.woocommerce-task-import-products h1{text-align:center;padding:0 0 32px}.woocommerce-task-import-products button{color:var(--wp-admin-theme-color)}.woocommerce-task-import-products button:focus:not(:disabled){outline:none;box-shadow:none}.woocommerce-task-import-products .woocommerce-task-import-products-stacks{display:flex;flex-wrap:wrap;justify-content:center;padding:25px 0 12px}.woocommerce-task-import-products .woocommerce-task-import-products-stacks .woocommerce-list__item .woocommerce-list__item-title{color:#1e1e1e}.woocommerce-task-import-products .woocommerce-task-import-products-stacks .woocommerce-list__item .woocommerce-list__item-content{color:#757575}.woocommerce-task-import-products .woocommerce-task-import-products-stacks .woocommerce-list__item-before{border:0;background:none}.woocommerce-products-load-sample-product-modal-overlay{top:0;background:hsla(0,0%,100%,.8)}@media(min-width:783px){.woocommerce-products-load-sample-product-modal-overlay{left:35px}}@media(min-width:960px){.woocommerce-products-load-sample-product-modal-overlay{left:160px}}.woocommerce-products-load-sample-product-modal{background:transparent;box-shadow:none}.woocommerce-products-load-sample-product-modal .components-modal__header{display:none}.woocommerce-products-load-sample-product-modal .components-modal__content,.woocommerce-products-load-sample-product-modal .components-modal__header+div{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0}.woocommerce-products-load-sample-product-modal .woocommerce-load-sample-product-modal__title{color:#1e1e1e;font-weight:400;font-size:24px;line-height:32px;margin-top:32px}.woocommerce-products-load-sample-product-modal .woocommerce-load-sample-product-modal__description{color:#757575;font-weight:400;font-size:16px;line-height:24px;margin-top:12px}:root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}body.admin-color-light{--wp-admin-theme-color:#0085ba;--wp-admin-theme-color--rgb:0,133,186;--wp-admin-theme-color-darker-10:#0073a1;--wp-admin-theme-color-darker-10--rgb:0,115,161;--wp-admin-theme-color-darker-20:#006187;--wp-admin-theme-color-darker-20--rgb:0,97,135;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-light{--wp-admin-border-width-focus:1.5px}}body.admin-color-modern{--wp-admin-theme-color:#3858e9;--wp-admin-theme-color--rgb:56,88,233;--wp-admin-theme-color-darker-10:#2145e6;--wp-admin-theme-color-darker-10--rgb:33,69,230;--wp-admin-theme-color-darker-20:#183ad6;--wp-admin-theme-color-darker-20--rgb:24,58,214;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-modern{--wp-admin-border-width-focus:1.5px}}body.admin-color-blue{--wp-admin-theme-color:#096484;--wp-admin-theme-color--rgb:9,100,132;--wp-admin-theme-color-darker-10:#07526c;--wp-admin-theme-color-darker-10--rgb:7,82,108;--wp-admin-theme-color-darker-20:#064054;--wp-admin-theme-color-darker-20--rgb:6,64,84;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-blue{--wp-admin-border-width-focus:1.5px}}body.admin-color-coffee{--wp-admin-theme-color:#46403c;--wp-admin-theme-color--rgb:70,64,60;--wp-admin-theme-color-darker-10:#383330;--wp-admin-theme-color-darker-10--rgb:56,51,48;--wp-admin-theme-color-darker-20:#2b2724;--wp-admin-theme-color-darker-20--rgb:43,39,36;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-coffee{--wp-admin-border-width-focus:1.5px}}body.admin-color-ectoplasm{--wp-admin-theme-color:#523f6d;--wp-admin-theme-color--rgb:82,63,109;--wp-admin-theme-color-darker-10:#46365d;--wp-admin-theme-color-darker-10--rgb:70,54,93;--wp-admin-theme-color-darker-20:#3a2c4d;--wp-admin-theme-color-darker-20--rgb:58,44,77;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-ectoplasm{--wp-admin-border-width-focus:1.5px}}body.admin-color-midnight{--wp-admin-theme-color:#e14d43;--wp-admin-theme-color--rgb:225,77,67;--wp-admin-theme-color-darker-10:#dd382d;--wp-admin-theme-color-darker-10--rgb:221,56,45;--wp-admin-theme-color-darker-20:#d02c21;--wp-admin-theme-color-darker-20--rgb:208,44,33;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-midnight{--wp-admin-border-width-focus:1.5px}}body.admin-color-ocean{--wp-admin-theme-color:#627c83;--wp-admin-theme-color--rgb:98,124,131;--wp-admin-theme-color-darker-10:#576e74;--wp-admin-theme-color-darker-10--rgb:87,110,116;--wp-admin-theme-color-darker-20:#4c6066;--wp-admin-theme-color-darker-20--rgb:76,96,102;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-ocean{--wp-admin-border-width-focus:1.5px}}body.admin-color-sunrise{--wp-admin-theme-color:#dd823b;--wp-admin-theme-color--rgb:221,130,59;--wp-admin-theme-color-darker-10:#d97426;--wp-admin-theme-color-darker-10--rgb:217,116,38;--wp-admin-theme-color-darker-20:#c36922;--wp-admin-theme-color-darker-20--rgb:195,105,34;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-sunrise{--wp-admin-border-width-focus:1.5px}}@media(min-width:783px){.woocommerce-products-load-sample-product-confirm-modal-overlay{left:35px}}@media(min-width:960px){.woocommerce-products-load-sample-product-confirm-modal-overlay{left:160px}}.woocommerce-products-load-sample-product-confirm-modal .components-truncate.components-text.woocommerce-confirmation-modal__message{color:#50575e}.woocommerce-products-load-sample-product-confirm-modal .woocommerce-confirmation-modal-actions{display:flex;justify-content:flex-end;margin-top:16px}.woocommerce-products-load-sample-product-confirm-modal .woocommerce-confirmation-modal-actions button{margin-left:16px}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js
deleted file mode 100644
index aab20a0e..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 4894.js.LICENSE.txt */
-(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[4894],{56530:(e,t,r)=>{"use strict";r.d(t,{Z:()=>f});var n=r(9818),s=r(69307),a=r(37798),o=r(83357),i=r(37557),c=r(65736),l=r(22629);const d=(e,t)=>`${t} `,u=e=>`href="${e}" target="_blank" rel="noreferrer noopener"`,p=e=>{const{title:t,foreign_landing_url:r,creator:n,creator_url:s,license:a,license_version:o,license_url:i}=e,p=((e,t)=>{let r=e.trim();return"pdm"!==e&&(r=e.toUpperCase().replace("SAMPLING","Sampling")),t&&(r+=` ${t}`),["pdm","cc0"].includes(e)||(r=`CC ${r}`),r})(a,o),m=(0,l.decodeEntities)(n);let g;return g=m?t?(0,c.sprintf)((0,c._x)('"%1$s" by %2$s/ %3$s',"caption"),d(r,(0,l.decodeEntities)(t)),s?d(s,m):m,i?d(`${i}?ref=openverse`,p):p):(0,c.sprintf)((0,c._x)("Work by %2$s/ %3$s","caption"),u(r),s?d(s,m):m,i?d(`${i}?ref=openverse`,p):p):t?(0,c.sprintf)((0,c._x)('"%1$s"/ %2$s',"caption"),d(r,(0,l.decodeEntities)(t)),i?d(`${i}?ref=openverse`,p):p):(0,c.sprintf)((0,c._x)("Work / %3$s","caption"),u(r),i?d(`${i}?ref=openverse`,p):p),g.replace(/\s{2}/g," ")},m=async(e={})=>(await(0,n.resolveSelect)(a.store).getMediaItems({...e,orderBy:e?.search?"relevance":"date"})).map((e=>({...e,alt:e.alt_text,url:e.source_url,previewUrl:e.media_details?.sizes?.medium?.source_url,caption:e.caption?.raw}))),g=[{name:"images",labels:{name:(0,c.__)("Images"),search_items:(0,c.__)("Search images")},mediaType:"image",fetch:async(e={})=>m({...e,media_type:"image"})},{name:"videos",labels:{name:(0,c.__)("Videos"),search_items:(0,c.__)("Search videos")},mediaType:"video",fetch:async(e={})=>m({...e,media_type:"video"})},{name:"audio",labels:{name:(0,c.__)("Audio"),search_items:(0,c.__)("Search audio")},mediaType:"audio",fetch:async(e={})=>m({...e,media_type:"audio"})},{name:"openverse",labels:{name:(0,c.__)("Openverse"),search_items:(0,c.__)("Search Openverse")},mediaType:"image",async fetch(e={}){const t={...e,mature:!1,excluded_source:"flickr,inaturalist,wikimedia",license:"pdm,cc0"},r={per_page:"page_size",search:"q"},n=new URL("https://api.openverse.engineering/v1/images/");Object.entries(t).forEach((([e,t])=>{const s=r[e]||e;n.searchParams.set(s,t)}));const s=await window.fetch(n,{headers:{"User-Agent":"WordPress/inserter-media-fetch"}});return(await s.json()).results.map((e=>({...e,title:e.title?.toLowerCase().startsWith("file:")?e.title.slice(5):e.title,sourceId:e.id,id:void 0,caption:p(e),previewUrl:e.thumbnail})))},getReportUrl:({sourceId:e})=>`https://wordpress.org/openverse/image/${e}/report/`,isExternalResource:!0}];function f(){var e,t;const{setIsInserterOpened:r}=(0,n.useDispatch)(o.h),{storedSettings:c,canvasMode:l,templateType:d}=(0,n.useSelect)((e=>{const{getSettings:t,getCanvasMode:n,getEditedPostType:s}=(0,i.U)(e(o.h));return{storedSettings:t(r),canvasMode:n(),templateType:s()}}),[r]),u=null!==(e=c.__experimentalAdditionalBlockPatterns)&&void 0!==e?e:c.__experimentalBlockPatterns,p=null!==(t=c.__experimentalAdditionalBlockPatternCategories)&&void 0!==t?t:c.__experimentalBlockPatternCategories,{restBlockPatterns:m,restBlockPatternCategories:f,templateSlug:y}=(0,n.useSelect)((e=>{const{getEditedPostType:t,getEditedPostId:r}=e(o.h),{getEditedEntityRecord:n}=e(a.store),s=n("postType",t(),r());return{restBlockPatterns:e(a.store).getBlockPatterns(),restBlockPatternCategories:e(a.store).getBlockPatternCategories(),templateSlug:s.slug}}),[]),h=function(e){const t=e?.match(/^(category|tag|taxonomy-([^-]+))$|^(((category|tag)|taxonomy-([^-]+))-(.+))$/);let r,s;return t&&(t[1]?r=t[2]?t[2]:t[1]:t[3]&&(r=t[6]?t[6]:t[4],s=t[7]),r="tag"===r?"post_tag":r),(0,n.useSelect)((e=>{const{getEntityRecords:t,getTaxonomy:n}=e(a.store);let o,i;if(r&&(o=n(r)?.labels?.singular_name),s){const e=t("taxonomy",r,{slug:s,per_page:1});e&&e[0]&&(i=e[0].name)}return{archiveTypeLabel:o,archiveNameLabel:i}}),[r,s])}(y),v=(0,s.useMemo)((()=>[...u||[],...m||[]].filter(((e,t,r)=>t===r.findIndex((t=>e.name===t.name)))).filter((({postTypes:e})=>!e||Array.isArray(e)&&e.includes(d)))),[u,m,d]),_=(0,s.useMemo)((()=>[...p||[],...f||[]].filter(((e,t,r)=>t===r.findIndex((t=>e.name===t.name))))),[p,f]);return(0,s.useMemo)((()=>{const{__experimentalAdditionalBlockPatterns:e,__experimentalAdditionalBlockPatternCategories:t,focusMode:r,...n}=c;return{...n,inserterMediaCategories:g,__experimentalBlockPatterns:v,__experimentalBlockPatternCategories:_,focusMode:("view"!==l||!r)&&r,__experimentalArchiveTitleTypeLabel:h.archiveTypeLabel,__experimentalArchiveTitleNameLabel:h.archiveNameLabel}}),[c,v,_,l,h.archiveTypeLabel,h.archiveNameLabel])}},14168:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(55609);function a(){return(0,n.createElement)("div",{className:"edit-site-canvas-spinner"},(0,n.createElement)(s.Spinner,null))}},9059:(e,t,r)=>{"use strict";r.d(t,{Z:()=>u});var n=r(69307),s=r(65736),a=r(92694),o=r(55609),i=r(52175),c=r(94333);function l({text:e,children:t}){const r=(0,c.useCopyToClipboard)(e);return(0,n.createElement)(o.Button,{variant:"secondary",ref:r},t)}function d({message:e,error:t}){const r=[(0,n.createElement)(l,{key:"copy-error",text:t.stack},(0,s.__)("Copy Error"))];return(0,n.createElement)(i.Warning,{className:"editor-error-boundary",actions:r},e)}class u extends n.Component{constructor(){super(...arguments),this.state={error:null}}componentDidCatch(e){(0,a.doAction)("editor.ErrorBoundary.errorLogged",e)}static getDerivedStateFromError(e){return{error:e}}render(){return this.state.error?(0,n.createElement)(d,{message:(0,s.__)("The editor has encountered an unexpected error."),error:this.state.error}):this.props.children}}},40592:(e,t,r)=>{"use strict";r.d(t,{w:()=>l});var n=r(69307),s=r(9818),a=r(52175),o=r(83357),i=r(37557);const{useGlobalStylesOutput:c}=(0,i.U)(a.privateApis);function l(){return function(){const[e,t]=c(),{getSettings:r}=(0,s.useSelect)(o.h),{updateSettings:a}=(0,s.useDispatch)(o.h);(0,n.useEffect)((()=>{var n;if(!e||!t)return;const s=r(),o=Object.values(null!==(n=s.styles)&&void 0!==n?n:[]).filter((e=>!e.isGlobalStyles));a({...s,styles:[...o,...e],__experimentalFeatures:t})}),[e,t])}(),null}},64567:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,X:()=>g});var n=r(69307),s=r(14298),a=r.n(s);function o(e){return"[object Object]"===Object.prototype.toString.call(e)}function i(e){var t,r;return!1!==o(e)&&(void 0===(t=e.constructor)||!1!==o(r=t.prototype)&&!1!==r.hasOwnProperty("isPrototypeOf"))}var c=r(9818),l=r(37798),d=r(52175),u=r(37557);const{GlobalStylesContext:p,cleanEmptyObject:m}=(0,u.U)(d.privateApis);function g(e,t){return a()(e,t,{isMergeableObject:i})}function f({children:e}){const t=function(){const[e,t,r]=function(){const{globalStylesId:e,isReady:t,settings:r,styles:s}=(0,c.useSelect)((e=>{const{getEditedEntityRecord:t,hasFinishedResolution:r}=e(l.store),n=e(l.store).__experimentalGetCurrentGlobalStylesId(),s=n?t("root","globalStyles",n):void 0;let a=!1;return r("__experimentalGetCurrentGlobalStylesId")&&(a=!n||r("getEditedEntityRecord",["root","globalStyles",n])),{globalStylesId:n,isReady:a,settings:s?.settings,styles:s?.styles}}),[]),{getEditedEntityRecord:a}=(0,c.useSelect)(l.store),{editEntityRecord:o}=(0,c.useDispatch)(l.store);return[t,(0,n.useMemo)((()=>({settings:null!=r?r:{},styles:null!=s?s:{}})),[r,s]),(0,n.useCallback)(((t,r={})=>{var n,s;const i=a("root","globalStyles",e),c=t({styles:null!==(n=i?.styles)&&void 0!==n?n:{},settings:null!==(s=i?.settings)&&void 0!==s?s:{}});o("root","globalStyles",e,{styles:m(c.styles)||{},settings:m(c.settings)||{}},r)}),[e])]}(),[s,a]=function(){const e=(0,c.useSelect)((e=>e(l.store).__experimentalGetCurrentThemeBaseGlobalStyles()),[]);return[!!e,e]}(),o=(0,n.useMemo)((()=>a&&t?g(a,t):{}),[t,a]);return(0,n.useMemo)((()=>({isReady:e&&s,user:t,base:a,merged:o,setUserConfig:r})),[o,t,a,r,e,s])}();return t.isReady?(0,n.createElement)(p.Provider,{value:t},e):null}},43302:(e,t,r)=>{"use strict";r.d(t,{T:()=>i});var n=r(69307),s=r(9818),a=r(37798),o=r(76989);function i(){const{isLoaded:e}=(0,o.Z)(),[t,r]=(0,n.useState)(!1),i=(0,s.useSelect)((e=>{const r=e(a.store).hasResolvingSelectors();return!t&&!r}),[t]);return(0,n.useEffect)((()=>{let e;return t||(e=setTimeout((()=>{r(!0)}),1e4)),()=>{clearTimeout(e)}}),[t]),(0,n.useEffect)((()=>{if(i){const e=setTimeout((()=>{r(!0)}),1e3);return()=>{clearTimeout(e)}}}),[i]),!t||!e}},3262:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var n=r(69307),s=r(83849),a=r.n(s),o=r(55609);function i(e){return(0,n.createElement)(o.Button,{...e,className:a()("edit-site-sidebar-button",e.className)})}},38536:(e,t,r)=>{"use strict";r.d(t,{Z:()=>p});var n=r(69307),s=r(83849),a=r.n(s),o=r(55609),i=r(65736);const c=function({icon:e,size:t=24,...r}){return(0,n.cloneElement)(e,{width:t,height:t,...r})};var l=r(70444);const d=(0,n.createElement)(l.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(l.Path,{d:"m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z"})),u=(0,n.createElement)(l.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(l.Path,{d:"M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z"}));function p({className:e,icon:t,withChevron:r=!1,suffix:s,children:l,...p}){return(0,n.createElement)(o.__experimentalItem,{className:a()("edit-site-sidebar-navigation-item",{"with-suffix":!r&&s},e),...p},(0,n.createElement)(o.__experimentalHStack,{justify:"flex-start"},t&&(0,n.createElement)(c,{style:{fill:"currentcolor"},icon:t,size:24}),(0,n.createElement)(o.FlexBlock,null,l),r&&(0,n.createElement)(c,{icon:(0,i.isRTL)()?d:u,className:"edit-site-sidebar-navigation-item__drilldown-indicator",size:24}),!r&&s))}},40800:(e,t,r)=>{"use strict";r.d(t,{Z:()=>p});var n=r(69307),s=r(83849),a=r.n(s),o=r(9818),i=r(55609),c=r(65736),l=r(70444);const d=(0,n.createElement)(l.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24"},(0,n.createElement)(l.Path,{d:"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"}));var u=r(37798);const p=function({className:e}){const{isRequestingSite:t,siteIconUrl:r}=(0,o.useSelect)((e=>{const{getEntityRecord:t}=e(u.store),r=t("root","__unstableBase",void 0);return{isRequestingSite:!r,siteIconUrl:r?.site_icon_url}}),[]);if(t&&!r)return(0,n.createElement)("div",{className:"edit-site-site-icon__image"});const s=r?(0,n.createElement)("img",{className:"edit-site-site-icon__image",alt:(0,c.__)("Site Icon"),src:r}):(0,n.createElement)(i.Icon,{className:"edit-site-site-icon__icon",size:"48px",icon:d});return(0,n.createElement)("div",{className:a()(e,"edit-site-site-icon")},s)}},17547:(e,t,r)=>{"use strict";r.d(t,{Z:()=>u});var n=r(69307),s=r(9818),a=r(37798),o=r(86802),i=r(83357),c=r(37557),l=r(32334);const{useLocation:d}=(0,c.U)(o.privateApis);function u(){const{params:e}=d(),{postType:t}=e,r=(0,l.Z)(e?.postId),{isRequestingSite:o,homepageId:c,url:u}=(0,s.useSelect)((e=>{const{getSite:t,getUnstableBase:r}=e(a.store),n=t(),s=r();return{isRequestingSite:!s,homepageId:"page"===n?.show_on_front?n.page_on_front:null,url:s?.home}}),[]),{setEditedEntity:p,setTemplate:m,setTemplatePart:g,setPage:f,setNavigationMenu:y}=(0,s.useDispatch)(i.h);(0,n.useEffect)((()=>{if(t&&r)switch(t){case"wp_template":m(r);break;case"wp_template_part":g(r);break;case"wp_navigation":y(r);break;case"wp_block":p(t,r);break;default:f({context:{postType:t,postId:r}})}else c?f({context:{postType:"page",postId:Number(c)}}):o||f({path:u})}),[u,r,t,c,o,p,f,m,g,y])}},76989:(e,t,r)=>{"use strict";r.d(t,{Z:()=>l});var n=r(9818),s=r(37798),a=r(12238),o=r(22629),i=r(83357),c=r(32334);function l(e,t){const{record:r,title:l,description:d,isLoaded:u,icon:p}=(0,n.useSelect)((r=>{const{getEditedPostType:n,getEditedPostId:o}=r(i.h),{getEditedEntityRecord:l,hasFinishedResolution:d}=r(s.store),{__experimentalGetTemplateInfo:u}=r(a.store),p=null!=e?e:n();let m=null!=t?t:o();m=(0,c.Z)(m,p);const g=l("postType",p,m),f=m&&d("getEditedEntityRecord",["postType",p,m]),y=u(g);return{record:g,title:y.title,description:y.description,isLoaded:f,icon:y.icon}}),[e,t]);return{isLoaded:u,icon:p,record:r,getTitle:()=>l?(0,o.decodeEntities)(l):null,getDescription:()=>d?(0,o.decodeEntities)(d):null}}},83357:(e,t,r)=>{"use strict";r.d(t,{h:()=>Pe});var n={};r.r(n),r.d(n,{__experimentalSetPreviewDeviceType:()=>T,addTemplate:()=>I,closeGeneralSidebar:()=>j,openGeneralSidebar:()=>U,openNavigationPanelToMenu:()=>D,removeTemplate:()=>P,revertTemplate:()=>$,setEditedEntity:()=>F,setEditedPostContext:()=>M,setHasPageContentFocus:()=>H,setHomeTemplateId:()=>k,setIsInserterOpened:()=>V,setIsListViewOpened:()=>z,setIsNavigationPanelOpened:()=>L,setIsSaveViewOpened:()=>G,setNavigationMenu:()=>N,setNavigationPanelActiveMenu:()=>R,setPage:()=>O,setTemplate:()=>x,setTemplatePart:()=>A,switchEditorMode:()=>Z,toggleFeature:()=>S,updateSettings:()=>B});var s={};r.r(s),r.d(s,{setCanvasMode:()=>W,setEditorCanvasContainerView:()=>q});var a={};r.r(a),r.d(a,{__experimentalGetInsertionPoint:()=>ge,__experimentalGetPreviewDeviceType:()=>se,__unstableGetPreference:()=>re,getCanUserCreateMedia:()=>ae,getCurrentTemplateNavigationPanelSubMenu:()=>_e,getCurrentTemplateTemplateParts:()=>he,getEditedPostContext:()=>ue,getEditedPostId:()=>de,getEditedPostType:()=>le,getEditorMode:()=>ve,getHomeTemplateId:()=>ce,getNavigationPanelActiveMenu:()=>Ee,getPage:()=>pe,getReusableBlocks:()=>oe,getSettings:()=>ie,hasPageContentFocus:()=>we,isFeatureActive:()=>ne,isInserterOpened:()=>me,isListViewOpened:()=>fe,isNavigationOpened:()=>Ce,isPage:()=>be,isSaveViewOpened:()=>ye});var o={};r.r(o),r.d(o,{getCanvasMode:()=>Se,getEditorCanvasContainerView:()=>Te});var i=r(9818);const c=(0,i.combineReducers)({deviceType:function(e="Desktop",t){return"SET_PREVIEW_DEVICE_TYPE"===t.type?t.deviceType:e},settings:function(e={},t){return"UPDATE_SETTINGS"===t.type?{...e,...t.settings}:e},editedPost:function(e={},t){switch(t.type){case"SET_EDITED_POST":return{postType:t.postType,id:t.id,context:t.context};case"SET_EDITED_POST_CONTEXT":return{...e,context:t.context}}return e},blockInserterPanel:function(e=!1,t){switch(t.type){case"SET_IS_LIST_VIEW_OPENED":return!t.isOpen&&e;case"SET_IS_INSERTER_OPENED":return t.value;case"SET_CANVAS_MODE":return!1}return e},listViewPanel:function(e=!1,t){switch(t.type){case"SET_IS_INSERTER_OPENED":return!t.value&&e;case"SET_IS_LIST_VIEW_OPENED":return t.isOpen;case"SET_CANVAS_MODE":return!1}return e},saveViewPanel:function(e=!1,t){switch(t.type){case"SET_IS_SAVE_VIEW_OPENED":return t.isOpen;case"SET_CANVAS_MODE":return!1}return e},canvasMode:function(e="init",t){return"SET_CANVAS_MODE"===t.type?t.mode:e},editorCanvasContainerView:function(e,t){return"SET_EDITOR_CANVAS_CONTAINER_VIEW"===t.type?t.view:e},hasPageContentFocus:function(e=!1,t){switch(t.type){case"SET_EDITED_POST":return!!t.context?.postId;case"SET_HAS_PAGE_CONTENT_FOCUS":return t.hasPageContentFocus}return e}});var l=r(86989),d=r.n(l),u=r(4981),p=r(37180),m=r.n(p),g=r(96483),f=r(65736),y=r(53961),h=r(37798),v=r(9480),_=r(52175),E=r(25158),C=r(55815),b=r(22629);const w="core/edit-site";function S(e){return function({registry:t}){m()("select( 'core/edit-site' ).toggleFeature( featureName )",{since:"6.0",alternative:"select( 'core/preferences').toggle( 'core/edit-site', featureName )"}),t.dispatch(C.store).toggle("core/edit-site",e)}}function T(e){return{type:"SET_PREVIEW_DEVICE_TYPE",deviceType:e}}const x=(e,t)=>async({dispatch:r,registry:n})=>{if(!t)try{const r=await n.resolveSelect(h.store).getEntityRecord("postType","wp_template",e);t=r?.slug}catch(e){}r({type:"SET_EDITED_POST",postType:"wp_template",id:e,context:{templateSlug:t}})},I=e=>async({dispatch:t,registry:r})=>{const n=await r.dispatch(h.store).saveEntityRecord("postType","wp_template",e);e.content&&r.dispatch(h.store).editEntityRecord("postType","wp_template",n.id,{blocks:(0,u.parse)(e.content)},{undoIgnore:!0}),t({type:"SET_EDITED_POST",postType:"wp_template",id:n.id,context:{templateSlug:n.slug}})},P=e=>async({registry:t})=>{try{await t.dispatch(h.store).deleteEntityRecord("postType",e.type,e.id,{force:!0});const r=t.select(h.store).getLastEntityDeleteError("postType",e.type,e.id);if(r)throw r;const n="string"==typeof e.title?e.title:e.title?.rendered;t.dispatch(y.store).createSuccessNotice((0,f.sprintf)((0,f.__)('"%s" deleted.'),(0,b.decodeEntities)(n)),{type:"snackbar",id:"site-editor-template-deleted-success"})}catch(e){const r=e.message&&"unknown_error"!==e.code?e.message:(0,f.__)("An error occurred while deleting the template.");t.dispatch(y.store).createErrorNotice(r,{type:"snackbar"})}};function A(e){return{type:"SET_EDITED_POST",postType:"wp_template_part",id:e}}function N(e){return{type:"SET_EDITED_POST",postType:"wp_navigation",id:e}}function F(e,t){return{type:"SET_EDITED_POST",postType:e,id:t}}function k(){return m()("dispatch( 'core/edit-site' ).setHomeTemplateId",{since:"6.2",version:"6.4"}),{type:"NOTHING"}}function M(e){return{type:"SET_EDITED_POST_CONTEXT",context:e}}const O=e=>async({dispatch:t,registry:r})=>{if(!e.path&&e.context?.postId){const t=await r.resolveSelect(h.store).getEntityRecord("postType",e.context.postType||"post",e.context.postId);e.path=(0,g.getPathAndQueryString)(t?.link)}const n=await r.resolveSelect(h.store).__experimentalGetTemplateForLink(e.path);if(n)return t({type:"SET_EDITED_POST",postType:"wp_template",id:n.id,context:{...e.context,templateSlug:n.slug}}),n.id};function R(){return m()("dispatch( 'core/edit-site' ).setNavigationPanelActiveMenu",{since:"6.2",version:"6.4"}),{type:"NOTHING"}}function D(){return m()("dispatch( 'core/edit-site' ).openNavigationPanelToMenu",{since:"6.2",version:"6.4"}),{type:"NOTHING"}}function L(){return m()("dispatch( 'core/edit-site' ).setIsNavigationPanelOpened",{since:"6.2",version:"6.4"}),{type:"NOTHING"}}function V(e){return{type:"SET_IS_INSERTER_OPENED",value:e}}function B(e){return{type:"UPDATE_SETTINGS",settings:e}}function z(e){return{type:"SET_IS_LIST_VIEW_OPENED",isOpen:e}}function G(e){return{type:"SET_IS_SAVE_VIEW_OPENED",isOpen:e}}const $=(e,{allowUndo:t=!0}={})=>async({registry:r})=>{const n="edit-site-template-reverted";if(r.dispatch(y.store).removeNotice(n),function(e){return!!e&&"custom"===e?.source&&e?.has_theme_file}(e))try{const s=r.select(h.store).getEntityConfig("postType",e.type);if(!s)return void r.dispatch(y.store).createErrorNotice((0,f.__)("The editor has encountered an unexpected error. Please reload."),{type:"snackbar"});const a=(0,g.addQueryArgs)(`${s.baseURL}/${e.id}`,{context:"edit",source:"theme"}),o=await d()({path:a});if(!o)return void r.dispatch(y.store).createErrorNotice((0,f.__)("The editor has encountered an unexpected error. Please reload."),{type:"snackbar"});const i=({blocks:e=[]})=>(0,u.__unstableSerializeAndClean)(e),c=r.select(h.store).getEditedEntityRecord("postType",e.type,e.id);r.dispatch(h.store).editEntityRecord("postType",e.type,e.id,{content:i,blocks:c.blocks,source:"custom"},{undoIgnore:!0});const l=(0,u.parse)(o?.content?.raw);if(r.dispatch(h.store).editEntityRecord("postType",e.type,o.id,{content:i,blocks:l,source:"theme"}),t){const t=()=>{r.dispatch(h.store).editEntityRecord("postType",e.type,c.id,{content:i,blocks:c.blocks,source:"custom"})};r.dispatch(y.store).createSuccessNotice((0,f.__)("Template reverted."),{type:"snackbar",id:n,actions:[{label:(0,f.__)("Undo"),onClick:t}]})}}catch(e){const t=e.message&&"unknown_error"!==e.code?e.message:(0,f.__)("Template revert failed. Please reload.");r.dispatch(y.store).createErrorNotice(t,{type:"snackbar"})}else r.dispatch(y.store).createErrorNotice((0,f.__)("This template is not revertable."),{type:"snackbar"})},U=e=>({registry:t})=>{t.dispatch(v.h).enableComplementaryArea(w,e)},j=()=>({registry:e})=>{e.dispatch(v.h).disableComplementaryArea(w)},Z=e=>({registry:t})=>{t.dispatch("core/preferences").set("core/edit-site","editorMode",e),"visual"!==e&&t.dispatch(_.store).clearSelectedBlock(),"visual"===e?(0,E.speak)((0,f.__)("Visual editor selected"),"assertive"):"text"===e&&(0,E.speak)((0,f.__)("Code editor selected"),"assertive")},H=e=>({dispatch:t,registry:r})=>{e&&r.dispatch(_.store).clearSelectedBlock(),t({type:"SET_HAS_PAGE_CONTENT_FOCUS",hasPageContentFocus:e})},W=e=>({registry:t,dispatch:r,select:n})=>{t.dispatch(_.store).__unstableSetEditorMode("edit"),r({type:"SET_CANVAS_MODE",mode:e}),"edit"===e&&t.select(C.store).get("core/edit-site","showListViewByDefault")&&r.setIsListViewOpened(!0),"view"===e&&n.isPage()&&r.setHasPageContentFocus(!0)},q=e=>({dispatch:t})=>{t({type:"SET_EDITOR_CANVAS_CONTAINER_VIEW",view:e})};var Y={};function J(e){return[e]}function X(e,t,r){var n;if(e.length!==t.length)return!1;for(n=r;n({...e,[t.id]:t})),{}):{},n=[],s=[...e];for(;s.length;){const{innerBlocks:e,...t}=s.shift();if(s.unshift(...e),(0,u.isTemplatePart)(t)){const{attributes:{theme:e,slug:s}}=t,a=r[`${e}//${s}`];a&&n.push({templatePart:a,block:t})}}return n})),re=(0,i.createRegistrySelector)((e=>(t,r)=>e(C.store).get("core/edit-site",r)));function ne(e,t){return m()("select( 'core/edit-site' ).isFeatureActive",{since:"6.0",alternative:"select( 'core/preferences' ).get"}),!!re(e,t)}function se(e){return e.deviceType}const ae=(0,i.createRegistrySelector)((e=>()=>e(h.store).canUser("create","media"))),oe=(0,i.createRegistrySelector)((e=>()=>"web"===K.Platform.OS?e(h.store).getEntityRecords("postType","wp_block",{per_page:-1}):[])),ie=function(e,t){var r,n=(e=>[ae(e),e.settings,re(e,"focusMode"),re(e,"distractionFree"),re(e,"fixedToolbar"),re(e,"keepCaretInsideBlock"),re(e,"showIconLabels"),oe(e),le(e)])||J;function s(e){var t,n,s,a,o,i=r,c=!0;for(t=0;t{const r={...e.settings,outlineMode:!0,focusMode:!!re(e,"focusMode"),isDistractionFree:!!re(e,"distractionFree"),hasFixedToolbar:!!re(e,"fixedToolbar"),keepCaretInsideBlock:!!re(e,"keepCaretInsideBlock"),showIconLabels:!!re(e,"showIconLabels"),__experimentalSetIsInserterOpened:t,__experimentalReusableBlocks:oe(e),__experimentalPreferPatternsOnRoot:"wp_template"===le(e)};return ae(e)?(r.mediaUpload=({onError:t,...r})=>{(0,Q.uploadMedia)({wpAllowedMimeTypes:e.settings.allowedMimeTypes,onError:({message:e})=>t(e),...r})},r):r}));function ce(){m()("select( 'core/edit-site' ).getHomeTemplateId",{since:"6.2",version:"6.4"})}function le(e){return e.editedPost.postType}function de(e){return e.editedPost.id}function ue(e){return e.editedPost.context}function pe(e){return{context:e.editedPost.context}}function me(e){return!!e.blockInserterPanel}const ge=(0,i.createRegistrySelector)((e=>t=>{if("object"==typeof t.blockInserterPanel){const{rootClientId:e,insertionIndex:r,filterValue:n}=t.blockInserterPanel;return{rootClientId:e,insertionIndex:r,filterValue:n}}if(we(t)){const[t]=e(_.store).__experimentalGetGlobalBlocksByName("core/post-content");if(t)return{rootClientId:t,insertionIndex:void 0,filterValue:void 0}}return{rootClientId:void 0,insertionIndex:void 0,filterValue:void 0}}));function fe(e){return e.listViewPanel}function ye(e){return e.saveViewPanel}const he=(0,i.createRegistrySelector)((e=>t=>{const r=le(t),n=de(t),s=e(h.store).getEditedEntityRecord("postType",r,n),a=e(h.store).getEntityRecords("postType","wp_template_part",{per_page:-1});return te(s.blocks,a)}));function ve(e){return re(e,"editorMode")}function _e(){m()("dispatch( 'core/edit-site' ).getCurrentTemplateNavigationPanelSubMenu",{since:"6.2",version:"6.4"})}function Ee(){m()("dispatch( 'core/edit-site' ).getNavigationPanelActiveMenu",{since:"6.2",version:"6.4"})}function Ce(){m()("dispatch( 'core/edit-site' ).isNavigationOpened",{since:"6.2",version:"6.4"})}function be(e){return!!e.editedPost.context?.postId}function we(e){return!!be(e)&&e.hasPageContentFocus}function Se(e){return e.canvasMode}function Te(e){return e.editorCanvasContainerView}var xe=r(37557);const Ie={reducer:c,actions:n,selectors:a},Pe=(0,i.createReduxStore)(w,Ie);(0,i.register)(Pe),(0,xe.U)(Pe).registerPrivateSelectors(o),(0,xe.U)(Pe).registerPrivateActions(s)},32334:(e,t,r)=>{"use strict";function n(e){return/^\s*\d+\s*$/.test(e)&&(e=Number(e)),e}r.d(t,{Z:()=>n})},83619:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"}))},68591:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},(0,n.createElement)(s.Path,{d:"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z"}))},41890:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{fillRule:"evenodd",d:"M18 5.5h-8v8h8.5V6a.5.5 0 00-.5-.5zm-9.5 8h-3V6a.5.5 0 01.5-.5h2.5v8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"}))},28897:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{d:"M18.5 10.5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"}))},58358:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{d:"M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"}))},85797:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"}))},63623:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{d:"M12 3c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 1.5c4.1 0 7.5 3.4 7.5 7.5v.1c-1.4-.8-3.3-1.7-3.4-1.8-.2-.1-.5-.1-.8.1l-2.9 2.1L9 11.3c-.2-.1-.4 0-.6.1l-3.7 2.2c-.1-.5-.2-1-.2-1.5 0-4.2 3.4-7.6 7.5-7.6zm0 15c-3.1 0-5.7-1.9-6.9-4.5l3.7-2.2 3.5 1.2c.2.1.5 0 .7-.1l2.9-2.1c.8.4 2.5 1.2 3.5 1.9-.9 3.3-3.9 5.8-7.4 5.8z"}))},89690:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{d:"M6.9 7L3 17.8h1.7l1-2.8h4.1l1 2.8h1.7L8.6 7H6.9zm-.7 6.6l1.5-4.3 1.5 4.3h-3zM21.6 17c-.1.1-.2.2-.3.2-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.3-.1-.6V12c0-.5 0-1-.1-1.4-.1-.4-.3-.7-.5-1-.2-.2-.5-.4-.9-.5-.4 0-.8-.1-1.3-.1s-1 .1-1.4.2c-.4.1-.7.3-1 .4-.2.2-.4.3-.6.5-.1.2-.2.4-.2.7 0 .3.1.5.2.8.2.2.4.3.8.3.3 0 .6-.1.8-.3.2-.2.3-.4.3-.7 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.6-.4.2-.2.4-.3.7-.4.3-.1.6-.1.8-.1.3 0 .6 0 .8.1.2.1.4.3.5.5.1.2.2.5.2.9v1.1c0 .3-.1.5-.3.6-.2.2-.5.3-.9.4-.3.1-.7.3-1.1.4-.4.1-.8.3-1.1.5-.3.2-.6.4-.8.7-.2.3-.3.7-.3 1.2 0 .6.2 1.1.5 1.4.3.4.9.5 1.6.5.5 0 1-.1 1.4-.3.4-.2.8-.6 1.1-1.1 0 .4.1.7.3 1 .2.3.6.4 1.2.4.4 0 .7-.1.9-.2.2-.1.5-.3.7-.4h-.3zm-3-.9c-.2.4-.5.7-.8.8-.3.2-.6.2-.8.2-.4 0-.6-.1-.9-.3-.2-.2-.3-.6-.3-1.1 0-.5.1-.9.3-1.2s.5-.5.8-.7c.3-.2.7-.3 1-.5.3-.1.6-.3.7-.6v3.4z"}))},23799:(e,t,r)=>{"use strict";r.d(t,{Z:()=>a});var n=r(69307),s=r(70444);const a=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{d:"M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z"}))},9480:(e,t,r)=>{"use strict";r.d(t,{v4:()=>m,XD:()=>u,h:()=>O});var n={};r.r(n),r.d(n,{closeModal:()=>I,disableComplementaryArea:()=>E,enableComplementaryArea:()=>_,openModal:()=>x,pinItem:()=>C,setDefaultComplementaryArea:()=>v,setFeatureDefaults:()=>T,setFeatureValue:()=>S,toggleFeature:()=>w,unpinItem:()=>b});var s={};r.r(s),r.d(s,{getActiveComplementaryArea:()=>P,isComplementaryAreaLoading:()=>A,isFeatureActive:()=>F,isItemPinned:()=>N,isModalActive:()=>k});var a=r(69307),o=r(83849),i=r.n(o),c=r(55609),l=r(65736),d=r(94333);function u({children:e,className:t,ariaLabel:r,as:n="div",...s}){return(0,a.createElement)(n,{className:i()("interface-navigable-region",t),"aria-label":r,role:"region",tabIndex:"-1",...s},e)}const p={hidden:{opacity:0},hover:{opacity:1,transition:{type:"tween",delay:.2,delayChildren:.2}},distractionFreeInactive:{opacity:1,transition:{delay:0}}},m=(0,a.forwardRef)((function({isDistractionFree:e,footer:t,header:r,editorNotices:n,sidebar:s,secondarySidebar:o,notices:m,content:g,actions:f,labels:y,className:h,enableRegionNavigation:v=!0,shortcuts:_},E){const C=(0,c.__unstableUseNavigateRegions)(_);!function(e){(0,a.useEffect)((()=>{const t=document&&document.querySelector(`html:not(.${e})`);if(t)return t.classList.toggle(e),()=>{t.classList.toggle(e)}}),[e])}("interface-interface-skeleton__html-container");const b={header:(0,l.__)("Header"),body:(0,l.__)("Content"),secondarySidebar:(0,l.__)("Block Library"),sidebar:(0,l.__)("Settings"),actions:(0,l.__)("Publish"),footer:(0,l.__)("Footer"),...y};return(0,a.createElement)("div",{...v?C:{},ref:(0,d.useMergeRefs)([E,v?C.ref:void 0]),className:i()(h,"interface-interface-skeleton",C.className,!!t&&"has-footer")},(0,a.createElement)("div",{className:"interface-interface-skeleton__editor"},!!r&&(0,a.createElement)(u,{as:c.__unstableMotion.div,className:"interface-interface-skeleton__header","aria-label":b.header,initial:e?"hidden":"distractionFreeInactive",whileHover:e?"hover":"distractionFreeInactive",animate:e?"hidden":"distractionFreeInactive",variants:p,transition:e?{type:"tween",delay:.8}:void 0},r),e&&(0,a.createElement)("div",{className:"interface-interface-skeleton__header"},n),(0,a.createElement)("div",{className:"interface-interface-skeleton__body"},!!o&&(0,a.createElement)(u,{className:"interface-interface-skeleton__secondary-sidebar",ariaLabel:b.secondarySidebar},o),!!m&&(0,a.createElement)("div",{className:"interface-interface-skeleton__notices"},m),(0,a.createElement)(u,{className:"interface-interface-skeleton__content",ariaLabel:b.body},g),!!s&&(0,a.createElement)(u,{className:"interface-interface-skeleton__sidebar",ariaLabel:b.sidebar},s),!!f&&(0,a.createElement)(u,{className:"interface-interface-skeleton__actions",ariaLabel:b.actions},f))),!!t&&(0,a.createElement)(u,{className:"interface-interface-skeleton__footer",ariaLabel:b.footer},t))}));var g=r(9818),f=r(37180),y=r.n(f),h=r(55815);const v=(e,t)=>({type:"SET_DEFAULT_COMPLEMENTARY_AREA",scope:e,area:t}),_=(e,t)=>({registry:r,dispatch:n})=>{t&&(r.select(h.store).get(e,"isComplementaryAreaVisible")||r.dispatch(h.store).set(e,"isComplementaryAreaVisible",!0),n({type:"ENABLE_COMPLEMENTARY_AREA",scope:e,area:t}))},E=e=>({registry:t})=>{t.select(h.store).get(e,"isComplementaryAreaVisible")&&t.dispatch(h.store).set(e,"isComplementaryAreaVisible",!1)},C=(e,t)=>({registry:r})=>{if(!t)return;const n=r.select(h.store).get(e,"pinnedItems");!0!==n?.[t]&&r.dispatch(h.store).set(e,"pinnedItems",{...n,[t]:!0})},b=(e,t)=>({registry:r})=>{if(!t)return;const n=r.select(h.store).get(e,"pinnedItems");r.dispatch(h.store).set(e,"pinnedItems",{...n,[t]:!1})};function w(e,t){return function({registry:r}){y()("dispatch( 'core/interface' ).toggleFeature",{since:"6.0",alternative:"dispatch( 'core/preferences' ).toggle"}),r.dispatch(h.store).toggle(e,t)}}function S(e,t,r){return function({registry:n}){y()("dispatch( 'core/interface' ).setFeatureValue",{since:"6.0",alternative:"dispatch( 'core/preferences' ).set"}),n.dispatch(h.store).set(e,t,!!r)}}function T(e,t){return function({registry:r}){y()("dispatch( 'core/interface' ).setFeatureDefaults",{since:"6.0",alternative:"dispatch( 'core/preferences' ).setDefaults"}),r.dispatch(h.store).setDefaults(e,t)}}function x(e){return{type:"OPEN_MODAL",name:e}}function I(){return{type:"CLOSE_MODAL"}}const P=(0,g.createRegistrySelector)((e=>(t,r)=>{const n=e(h.store).get(r,"isComplementaryAreaVisible");if(void 0!==n)return!1===n?null:t?.complementaryAreas?.[r]})),A=(0,g.createRegistrySelector)((e=>(t,r)=>{const n=e(h.store).get(r,"isComplementaryAreaVisible"),s=t?.complementaryAreas?.[r];return n&&void 0===s})),N=(0,g.createRegistrySelector)((e=>(t,r,n)=>{var s;return null===(s=e(h.store).get(r,"pinnedItems")?.[n])||void 0===s||s})),F=(0,g.createRegistrySelector)((e=>(t,r,n)=>(y()("select( 'core/interface' ).isFeatureActive( scope, featureName )",{since:"6.0",alternative:"select( 'core/preferences' ).get( scope, featureName )"}),!!e(h.store).get(r,n))));function k(e,t){return e.activeModal===t}const M=(0,g.combineReducers)({complementaryAreas:function(e={},t){switch(t.type){case"SET_DEFAULT_COMPLEMENTARY_AREA":{const{scope:r,area:n}=t;return e[r]?e:{...e,[r]:n}}case"ENABLE_COMPLEMENTARY_AREA":{const{scope:r,area:n}=t;return{...e,[r]:n}}}return e},activeModal:function(e=null,t){switch(t.type){case"OPEN_MODAL":return t.name;case"CLOSE_MODAL":return null}return e}}),O=(0,g.createReduxStore)("core/interface",{reducer:M,actions:n,selectors:s});(0,g.register)(O)},25516:(e,t,r)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,s=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(s=n))})),t.splice(s,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r(90480)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},90480:(e,t,r)=>{e.exports=function(e){function t(e){let r,s,a,o=null;function i(...e){if(!i.enabled)return;const n=i,s=Number(new Date),a=s-(r||s);n.diff=a,n.prev=r,n.curr=s,r=s,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let o=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,s)=>{if("%%"===r)return"%";o++;const a=t.formatters[s];if("function"==typeof a){const t=e[o];r=a.call(n,t),e.splice(o,1),o--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return i.namespace=e,i.useColors=t.useColors(),i.color=t.selectColor(e),i.extend=n,i.destroy=t.destroy,Object.defineProperty(i,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(s!==t.namespaces&&(s=t.namespaces,a=t.enabled(e)),a),set:e=>{o=e}}),"function"==typeof t.init&&t.init(i),i}function n(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function s(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(s),...t.skips.map(s).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),s=n.length;for(r=0;r{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t{"use strict";var t=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===r}(e)}(e)},r="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function n(e,t){return!1!==t.clone&&t.isMergeableObject(e)?i((r=e,Array.isArray(r)?[]:{}),e,t):e;var r}function s(e,t,r){return e.concat(t).map((function(e){return n(e,r)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function o(e,t){try{return t in e}catch(e){return!1}}function i(e,r,c){(c=c||{}).arrayMerge=c.arrayMerge||s,c.isMergeableObject=c.isMergeableObject||t,c.cloneUnlessOtherwiseSpecified=n;var l=Array.isArray(r);return l===Array.isArray(e)?l?c.arrayMerge(e,r,c):function(e,t,r){var s={};return r.isMergeableObject(e)&&a(e).forEach((function(t){s[t]=n(e[t],r)})),a(t).forEach((function(a){(function(e,t){return o(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,a)||(o(e,a)&&r.isMergeableObject(t[a])?s[a]=function(e,t){if(!t.customMerge)return i;var r=t.customMerge(e);return"function"==typeof r?r:i}(a,r)(e[a],t[a],r):s[a]=n(t[a],r))})),s}(e,r,c):n(r,c)}i.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,r){return i(e,r,t)}),{})};var c=i;e.exports=c},44247:e=>{var t=1e3,r=60*t,n=60*r,s=24*n;function a(e,t,r,n){var s=t>=1.5*r;return Math.round(e/r)+" "+n+(s?"s":"")}e.exports=function(e,o){o=o||{};var i,c,l=typeof e;if("string"===l&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(a){var o=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*o;case"weeks":case"week":case"w":return 6048e5*o;case"days":case"day":case"d":return o*s;case"hours":case"hour":case"hrs":case"hr":case"h":return o*n;case"minutes":case"minute":case"mins":case"min":case"m":return o*r;case"seconds":case"second":case"secs":case"sec":case"s":return o*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return}}}}(e);if("number"===l&&isFinite(e))return o.long?(i=e,(c=Math.abs(i))>=s?a(i,c,s,"day"):c>=n?a(i,c,n,"hour"):c>=r?a(i,c,r,"minute"):c>=t?a(i,c,t,"second"):i+" ms"):function(e){var a=Math.abs(e);return a>=s?Math.round(e/s)+"d":a>=n?Math.round(e/n)+"h":a>=r?Math.round(e/r)+"m":a>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js.LICENSE.txt b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js.LICENSE.txt
deleted file mode 100644
index fe4c1fe3..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/4894.js.LICENSE.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * is-plain-object
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.js
deleted file mode 100644
index 17590c94..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[5792],{68589:(e,t,o)=>{o.d(t,{Z:()=>s});var r=o(69307),c=o(65736),n=o(55609),a=o(14812);const s=e=>{let{onCancel:t,onImport:o}=e;return(0,r.createElement)(n.Modal,{className:"woocommerce-products-load-sample-product-confirm-modal",overlayClassName:"woocommerce-products-load-sample-product-confirm-modal-overlay",title:(0,c.__)("Load sample products","woocommerce"),onRequestClose:t},(0,r.createElement)(a.Text,{className:"woocommerce-confirmation-modal__message"},(0,c.__)("We'll import images from Woo.com to set up your sample products.","woocommerce")),(0,r.createElement)("div",{className:"woocommerce-confirmation-modal-actions"},(0,r.createElement)(n.Button,{isSecondary:!0,onClick:t},(0,c.__)("Cancel","woocommerce")),(0,r.createElement)(n.Button,{isPrimary:!0,onClick:o},(0,c.__)("Import sample products","woocommerce"))))}},48451:(e,t,o)=>{o.d(t,{Z:()=>i});var r=o(69307),c=o(65736),n=o(55609),a=o(34928),s=o(14812);const i=()=>(0,r.createElement)(n.Modal,{className:"woocommerce-products-load-sample-product-modal",overlayClassName:"woocommerce-products-load-sample-product-modal-overlay",title:"",onRequestClose:()=>{}},(0,r.createElement)(a.Spinner,{color:"#007cba",size:48}),(0,r.createElement)(s.Text,{className:"woocommerce-load-sample-product-modal__title"},(0,c.__)("Loading sample products","woocommerce")),(0,r.createElement)(s.Text,{className:"woocommerce-load-sample-product-modal__description"},(0,c.__)("We are loading 9 sample products into your store","woocommerce")))},42896:(e,t,o)=>{o.d(t,{Z:()=>d});var r=o(65736),c=o(86989),n=o.n(c),a=o(67221),s=o(9818),i=o(69307),l=o(14599),m=o(31611);const d=e=>{let{redirectUrlAfterSuccess:t}=e;const[o,c]=(0,i.useState)(!1),{createNotice:d}=(0,s.useDispatch)("core/notices"),{recordCompletionTime:p}=(0,m.Z)("products");return{loadSampleProduct:async()=>{(0,l.recordEvent)("tasklist_add_product",{method:"sample_product"}),p(),c(!0);try{if(await n()({path:`${a.WC_ADMIN_NAMESPACE}/onboarding/tasks/import_sample_products`,method:"POST"}),t)return void(window.location.href=t)}catch(e){const t=e instanceof Error&&e.message?e.message:(0,r.__)("There was an error importing the sample products","woocommerce");d("error",t)}c(!1)},isLoadingSampleProducts:o}}},65792:(e,t,o)=>{o.r(t),o.d(t,{Products:()=>x});var r=o(69307),c=o(65736),n=o(72456),a=o(14812),s=o(98817),i=o(55609),l=o(74617),m=o(23374),d=o(86241),p=o(73224),u=o(14599),_=o(67221),w=o(9818),h=o(73463),k=o(70422),g=o(19460),E=o(25247),y=o(75283),f=o(86020),v=o(31611);const C=()=>{const{recordCompletionTime:e}=(0,v.Z)("products");return(0,r.createElement)("div",{className:"woocommerce-products-footer"},(0,r.createElement)(a.Text,{className:"woocommerce-products-footer__selling-somewhere-else"},"Are you already selling somewhere else?"),(0,r.createElement)(a.Text,{className:"woocommerce-products-footer__import-options"},(0,y.Z)({mixedString:(0,c.__)("{{importCSVLink}}Import your products from a CSV file{{/importCSVLink}}.","woocommerce"),components:{importCSVLink:(0,r.createElement)(f.Link,{onClick:()=>((0,u.recordEvent)("tasklist_add_product",{method:"import"}),e(),window.location.href=(0,l.getAdminLink)("edit.php?post_type=product&page=product_importer&wc_onboarding_active_task=products"),!1),href:"",type:"wc-admin"},(0,r.createElement)(r.Fragment,null))}})))};var b=o(48451),Z=o(42896),L=o(68589),S=o(82580);const T=e=>{let{isExpanded:t,onClick:o}=e;return(0,r.createElement)(i.Button,{className:"woocommerce-task-products__button-view-less-product-types",onClick:o},t?(0,c.__)("View less product types","woocommerce"):(0,c.__)("View more product types","woocommerce"),(0,r.createElement)(m.Z,{icon:t?d.Z:p.Z}))},x=()=>{const[e,t]=(0,r.useState)(!1),[o,n]=(0,r.useState)(!1),{isStoreInUS:s}=(0,w.useSelect)((e=>{const{getSettings:t}=e(_.SETTINGS_STORE_NAME),{general:o={}}=t("general"),r="string"==typeof o.woocommerce_default_country?o.woocommerce_default_country:"";return{isStoreInUS:"US"===(0,S.so)(r)}})),i=(0,k.r)((()=>{const e=(0,h.O3)("onboarding");return(null==e?void 0:e.profile)&&(null==e?void 0:e.profile.product_types)||["physical"]})()),{productTypes:m,isRequesting:d}=(0,g.Z)((0,k.Q)({exclude:s?[]:["subscription"]}),i),{recordCompletionTime:p}=(0,v.Z)("products"),y=(0,r.useMemo)((()=>m.map((e=>({...e,onClick:()=>{e.onClick(),p()}})))),[p,m]),{loadSampleProduct:f,isLoadingSampleProducts:x}=(0,Z.Z)({redirectUrlAfterSuccess:(0,l.getAdminLink)("edit.php?post_type=product&wc_onboarding_active_task=products")}),V=(0,r.useMemo)((()=>{const t=y.filter((e=>i.includes(e.key)));return e&&y.forEach((e=>!t.includes(e)&&t.push(e))),t}),[i,e,y]);return(0,r.createElement)("div",{className:"woocommerce-task-products"},(0,r.createElement)(a.Text,{variant:"title",as:"h2",className:"woocommerce-task-products__title"},(0,c.__)("What product do you want to add?","woocommerce")),(0,r.createElement)("div",{className:"woocommerce-product-content"},(0,r.createElement)(E.Z,{items:V,onClickLoadSampleProduct:()=>n(!0),showOtherOptions:e,isTaskListItemClicked:d}),(0,r.createElement)(T,{isExpanded:e,onClick:()=>{e||(0,u.recordEvent)("tasklist_view_more_product_types_click"),t(!e)}}),(0,r.createElement)(C,null)),x?(0,r.createElement)(b.Z,null):o&&(0,r.createElement)(L.Z,{onCancel:()=>{n(!1),(0,u.recordEvent)("tasklist_cancel_load_sample_products_click")},onImport:()=>{n(!1),f()}}))},V=()=>(0,r.createElement)(n.WooOnboardingTask,{id:"products"},(0,r.createElement)(x,null));(0,s.registerPlugin)("wc-admin-onboarding-task-products",{scope:"woocommerce-tasks",render:()=>(0,r.createElement)(V,null)})},25247:(e,t,o)=>{o.d(t,{Z:()=>d});var r=o(69307),c=o(65736),n=o(86020),a=o(14812),s=o(75283),i=o(74617),l=o(14599),m=o(31611);const d=e=>{let{items:t,onClickLoadSampleProduct:o,showOtherOptions:d=!0,isTaskListItemClicked:p=!1}=e;const{recordCompletionTime:u}=(0,m.Z)("products");return(0,r.createElement)("div",{className:"woocommerce-products-stack"},p&&(0,r.createElement)("div",{className:"woocommerce-stack__overlay-spinner"},(0,r.createElement)(n.Spinner,{className:"list-overlay"})),(0,r.createElement)(n.List,{items:t}),d&&(0,r.createElement)(a.Text,{className:"woocommerce-stack__other-options"},(0,s.Z)({mixedString:(0,c.__)("Can’t find your product type? {{sbLink}}Start Blank{{/sbLink}} or {{LspLink}}Load Sample Products{{/LspLink}} to see what they look like in your store.","woocommerce"),components:{sbLink:(0,r.createElement)(n.Link,{onClick:()=>((0,l.recordEvent)("tasklist_add_product",{method:"manually"}),u(),window.location.href=(0,i.getAdminLink)("post-new.php?post_type=product&wc_onboarding_active_task=products&tutorial=true"),!1),href:"",type:"wc-admin"},(0,r.createElement)(r.Fragment,null)),LspLink:(0,r.createElement)(n.Link,{href:"",type:"wc-admin",onClick:()=>(o(),!1)},(0,r.createElement)(r.Fragment,null))}})))}},19460:(e,t,o)=>{o.d(t,{Z:()=>u});var r=o(69307),c=o(14599),n=o(9818),a=o(67221),s=o(10431),i=o(74617),l=o(73516),m=o(34704),d=o(73463);const p=()=>{const{createProductFromTemplate:e}=(0,n.useDispatch)(a.ITEMS_STORE_NAME),[t,o]=(0,r.useState)(!1),c=window.wcAdminFeatures["new-product-management-experience"];return{createProductByType:async t=>{if("subscription"!==t){if(o(!0),"physical"===t||"variable"===t||"digital"===t){if(c)return void(0,s.navigateTo)({url:(0,s.getNewPath)({},"/add-product",{})});if("treatment"===(await(0,l.loadExperimentAssignment)("woocommerce_product_creation_experience_add_digital_202311_v1")).variationName){const e=(0,d.O3)("_feature_nonce");return void(window.location.href=(0,i.getAdminLink)(`post-new.php?post_type=product&product_block_editor=1&_feature_nonce=${e}`))}}try{const o=await e({template_name:t,status:"draft"},{_fields:["id"]});if(o&&o.id){const e=(0,i.getAdminLink)(`post.php?post=${o.id}&action=edit&wc_onboarding_active_task=products&tutorial=true`);return void(window.location.href=e)}throw new Error("Unexpected empty data response from server")}catch(e){(0,m.a)(e)}o(!1)}else window.location.href=(0,i.getAdminLink)("post-new.php?post_type=product&subscription_pointers=true")},isRequesting:t}},u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],{onClick:o}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{createProductByType:n,isRequesting:a}=p(),s=(0,r.useMemo)((()=>e.map((e=>({...e,onClick:()=>{n(e.key),(0,c.recordEvent)("tasklist_add_product",{method:"product_template"}),(0,c.recordEvent)("tasklist_product_template_selection",{product_type:e.key,is_suggested:t.includes(e.key)}),"function"==typeof o&&o()}})))),[n]);return{productTypes:s,isRequesting:a}}},70422:(e,t,o)=>{o.d(t,{Q:()=>h,r:()=>k});var r=o(92819),c=o(69307),n=o(65736),a=o(90391),s=o(96898),i=o(7480),l=o(48349),m=o(23374),d=o(83619);const p=Object.freeze([{key:"physical",title:(0,n.__)("Physical product","woocommerce"),content:(0,n.__)("A tangible item that gets delivered to customers.","woocommerce"),before:(0,c.createElement)(a.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"digital",title:(0,n.__)("Digital product","woocommerce"),content:(0,n.__)("A digital product like service, downloadable book, music or video.","woocommerce"),before:(0,c.createElement)(s.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"variable",title:(0,n.__)("Variable product","woocommerce"),content:(0,n.__)("A product with variations like color or size.","woocommerce"),before:(0,c.createElement)(i.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"subscription",title:(0,n.__)("Subscription product","woocommerce"),content:(0,n.__)("Item that customers receive on a regular basis.","woocommerce"),before:(0,c.createElement)(l.Z,null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"grouped",title:(0,n.__)("Grouped product","woocommerce"),content:(0,n.__)("A collection of related products.","woocommerce"),before:(0,c.createElement)((()=>(0,c.createElement)("svg",{width:"25",height:"24",viewBox:"0 0 25 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,c.createElement)("mask",{id:"mask0_1133_132667",style:{maskType:"alpha"},maskUnits:"userSpaceOnUse",x:"2",y:"2",width:"21",height:"20"},(0,c.createElement)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.5 2.34497L10.84 7.99497V3.65497H2.84003V11.655H10.84V7.99497L16.5 13.655H12.84V21.655H20.84V13.655H16.5L22.16 7.99497L16.5 2.34497ZM19.33 8.00497L16.5 5.17497L13.67 8.00497L16.5 10.835L19.33 8.00497ZM8.84003 9.65497V5.65497H4.84003V9.65497H8.84003ZM18.84 15.655V19.655H14.84V15.655H18.84ZM8.84003 19.655V15.655H4.84003V19.655H8.84003ZM2.84003 13.655H10.84V21.655H2.84003V13.655Z",fill:"white"})),(0,c.createElement)("g",{mask:"url(#mask0_1133_132667)"},(0,c.createElement)("rect",{x:"0.5",width:"24",height:"24"})))),null),after:(0,c.createElement)(m.Z,{icon:d.Z})},{key:"external",title:(0,n.__)("External product","woocommerce"),content:(0,n.__)("Link a product to an external website.","woocommerce"),before:(0,c.createElement)((()=>(0,c.createElement)("svg",{width:"25",height:"24",viewBox:"0 0 25 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,c.createElement)("mask",{id:"mask0_1133_132681",style:{maskType:"alpha"},maskUnits:"userSpaceOnUse",x:"2",y:"7",width:"21",height:"10"},(0,c.createElement)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.5 15H7.5C5.85 15 4.5 13.65 4.5 12C4.5 10.35 5.85 9 7.5 9H11.5V7H7.5C4.74 7 2.5 9.24 2.5 12C2.5 14.76 4.74 17 7.5 17H11.5V15ZM17.5 7H13.5V9H17.5C19.15 9 20.5 10.35 20.5 12C20.5 13.65 19.15 15 17.5 15H13.5V17H17.5C20.26 17 22.5 14.76 22.5 12C22.5 9.24 20.26 7 17.5 7ZM16.5 11H8.5V13H16.5V11Z",fill:"white"})),(0,c.createElement)("g",{mask:"url(#mask0_1133_132681)"},(0,c.createElement)("rect",{x:"0.5",width:"24",height:"24"})))),null),after:(0,c.createElement)(m.Z,{icon:d.Z})}]),u=((0,n.__)("can’t decide?","woocommerce"),(0,n.__)("Load sample products and see what they look like in your store.","woocommerce"),(0,c.createElement)((()=>(0,c.createElement)("svg",{width:"25",height:"24",viewBox:"0 0 25 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,c.createElement)("mask",{id:"mask0_1133_132689",style:{maskType:"alpha"},maskUnits:"userSpaceOnUse",x:"5",y:"2",width:"15",height:"20"},(0,c.createElement)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.5 2C8.64 2 5.5 5.14 5.5 9C5.5 11.38 6.69 13.47 8.5 14.74V17C8.5 17.55 8.95 18 9.5 18H15.5C16.05 18 16.5 17.55 16.5 17V14.74C18.31 13.47 19.5 11.38 19.5 9C19.5 5.14 16.36 2 12.5 2ZM9.5 21C9.5 21.55 9.95 22 10.5 22H14.5C15.05 22 15.5 21.55 15.5 21V20H9.5V21ZM14.5 13.7L15.35 13.1C16.7 12.16 17.5 10.63 17.5 9C17.5 6.24 15.26 4 12.5 4C9.74 4 7.5 6.24 7.5 9C7.5 10.63 8.3 12.16 9.65 13.1L10.5 13.7V16H14.5V13.7Z",fill:"white"})),(0,c.createElement)("g",{mask:"url(#mask0_1133_132689)"},(0,c.createElement)("rect",{x:"0.5",width:"24",height:"24",fill:"#757575"})))),null),(0,c.createElement)(m.Z,{icon:d.Z}),Object.freeze({physical:["physical","variable","grouped"],subscriptions:["subscription"],downloads:["digital"],"physical,subscriptions":["physical","subscription"],"downloads,physical":["physical","digital"],"downloads,subscriptions":["digital","subscription"],"downloads,physical,subscriptions":["physical","digital","subscription"]})),_=u.physical,w=["physical","subscriptions","downloads"],h=function(){let{exclude:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e&&(null==e?void 0:e.length)>0?p.filter((t=>!e.includes(t.key))):[...p]},k=e=>{const t=(0,r.intersection)(e,w).sort().join(",");return u.hasOwnProperty(t)?u[t]:_}},31611:(e,t,o)=>{o.d(t,{Z:()=>a});var r=o(69307),c=o(14599),n=o(34374);const a=(e,t)=>{const o=(0,r.useRef)(t||window.performance.now());return{recordCompletionTime:()=>{(0,c.recordEvent)("task_completion_time",{task_name:e,time:(0,n.Jm)(window.performance.now()-o.current)})}}}}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.style.css b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.style.css
deleted file mode 100644
index 363cd132..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5792.style.css
+++ /dev/null
@@ -1 +0,0 @@
-.woocommerce-task-products{display:flex;flex-direction:column;align-items:center}.woocommerce-task-products a{text-decoration:none;color:#007cba}.woocommerce-task-products .woocommerce-task-products__title{font-size:24px;text-align:center}.woocommerce-task-products .woocommerce-product-content{display:flex;flex-direction:column}.woocommerce-task-products .woocommerce-task-products__button-view-less-product-types{color:#007cba;padding:0;height:fit-content;margin-top:21px;justify-content:center}.woocommerce-task-products .woocommerce-task-products__button-view-less-product-types svg{margin-left:8px}.woocommerce-task-products .woocommerce-task-products__button-view-less-product-types:focus{color:#007cba;outline:none;box-shadow:none}.woocommerce-task-products .woocommerce-products-footer{margin-top:53px;display:flex;flex-direction:column}.woocommerce-task-products .woocommerce-products-footer__selling-somewhere-else{text-transform:uppercase;color:#757575;font-weight:500;font-size:11px;line-height:16px;margin-bottom:8px}.woocommerce-task-products .woocommerce-products-stack{max-width:550px;margin-top:32px}.woocommerce-products-stack{width:550px;position:relative}@media(max-width:550px){.woocommerce-products-stack{width:100%}}.woocommerce-products-stack a{text-decoration:none;color:#007cba}.woocommerce-products-stack .woocommerce-list__item{margin-top:8px;border-radius:3px;border:1.5px solid #dcdcde}.woocommerce-products-stack .woocommerce-list__item:hover{background-color:#fff;border:1.5px solid #007cba}.woocommerce-products-stack .woocommerce-list__item:hover .woocommerce-list__item-title{color:#1e1e1e}.woocommerce-products-stack .woocommerce-list__item:not(.transitions-disabled).woocommerce-list__item-enter{transform:none}.woocommerce-products-stack .woocommerce-list__item:not(.transitions-disabled).woocommerce-list__item-enter-active{transform:none}.woocommerce-products-stack .woocommerce-list__item:not(.transitions-disabled).woocommerce-list__item-exit-active{display:none}.woocommerce-products-stack .woocommerce-list__item:first-child{margin-top:0}.woocommerce-products-stack .woocommerce-list__item-inner:focus{box-shadow:none}.woocommerce-products-stack .woocommerce-list__item-before{background:#f0f6fc;padding:8px;border-radius:50%}.woocommerce-products-stack .woocommerce-list__item-title{color:#1e1e1e;line-height:16px;font-weight:600}.woocommerce-products-stack .woocommerce-list__item-content{color:#757575;line-height:16px;font-weight:400}.woocommerce-products-stack .woocommerce-list__item-after svg{fill:#949494}.woocommerce-products-stack .woocommerce-stack__other-options{display:block;margin-top:20px;margin-bottom:4px;color:#757575;line-height:16px}.woocommerce-products-stack .woocommerce-stack__overlay-spinner{position:absolute;top:0;left:0;right:0;bottom:0;background-color:hsla(0,0%,100%,.8);display:flex;justify-content:center;align-items:center;z-index:999}.woocommerce-products-stack .woocommerce-stack__overlay-spinner .list-overlay{position:relative}.woocommerce-products-load-sample-product-modal-overlay{top:0;background:hsla(0,0%,100%,.8)}@media(min-width:783px){.woocommerce-products-load-sample-product-modal-overlay{left:35px}}@media(min-width:960px){.woocommerce-products-load-sample-product-modal-overlay{left:160px}}.woocommerce-products-load-sample-product-modal{background:transparent;box-shadow:none}.woocommerce-products-load-sample-product-modal .components-modal__header{display:none}.woocommerce-products-load-sample-product-modal .components-modal__content,.woocommerce-products-load-sample-product-modal .components-modal__header+div{display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0}.woocommerce-products-load-sample-product-modal .woocommerce-load-sample-product-modal__title{color:#1e1e1e;font-weight:400;font-size:24px;line-height:32px;margin-top:32px}.woocommerce-products-load-sample-product-modal .woocommerce-load-sample-product-modal__description{color:#757575;font-weight:400;font-size:16px;line-height:24px;margin-top:12px}:root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}body.admin-color-light{--wp-admin-theme-color:#0085ba;--wp-admin-theme-color--rgb:0,133,186;--wp-admin-theme-color-darker-10:#0073a1;--wp-admin-theme-color-darker-10--rgb:0,115,161;--wp-admin-theme-color-darker-20:#006187;--wp-admin-theme-color-darker-20--rgb:0,97,135;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-light{--wp-admin-border-width-focus:1.5px}}body.admin-color-modern{--wp-admin-theme-color:#3858e9;--wp-admin-theme-color--rgb:56,88,233;--wp-admin-theme-color-darker-10:#2145e6;--wp-admin-theme-color-darker-10--rgb:33,69,230;--wp-admin-theme-color-darker-20:#183ad6;--wp-admin-theme-color-darker-20--rgb:24,58,214;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-modern{--wp-admin-border-width-focus:1.5px}}body.admin-color-blue{--wp-admin-theme-color:#096484;--wp-admin-theme-color--rgb:9,100,132;--wp-admin-theme-color-darker-10:#07526c;--wp-admin-theme-color-darker-10--rgb:7,82,108;--wp-admin-theme-color-darker-20:#064054;--wp-admin-theme-color-darker-20--rgb:6,64,84;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-blue{--wp-admin-border-width-focus:1.5px}}body.admin-color-coffee{--wp-admin-theme-color:#46403c;--wp-admin-theme-color--rgb:70,64,60;--wp-admin-theme-color-darker-10:#383330;--wp-admin-theme-color-darker-10--rgb:56,51,48;--wp-admin-theme-color-darker-20:#2b2724;--wp-admin-theme-color-darker-20--rgb:43,39,36;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-coffee{--wp-admin-border-width-focus:1.5px}}body.admin-color-ectoplasm{--wp-admin-theme-color:#523f6d;--wp-admin-theme-color--rgb:82,63,109;--wp-admin-theme-color-darker-10:#46365d;--wp-admin-theme-color-darker-10--rgb:70,54,93;--wp-admin-theme-color-darker-20:#3a2c4d;--wp-admin-theme-color-darker-20--rgb:58,44,77;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-ectoplasm{--wp-admin-border-width-focus:1.5px}}body.admin-color-midnight{--wp-admin-theme-color:#e14d43;--wp-admin-theme-color--rgb:225,77,67;--wp-admin-theme-color-darker-10:#dd382d;--wp-admin-theme-color-darker-10--rgb:221,56,45;--wp-admin-theme-color-darker-20:#d02c21;--wp-admin-theme-color-darker-20--rgb:208,44,33;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-midnight{--wp-admin-border-width-focus:1.5px}}body.admin-color-ocean{--wp-admin-theme-color:#627c83;--wp-admin-theme-color--rgb:98,124,131;--wp-admin-theme-color-darker-10:#576e74;--wp-admin-theme-color-darker-10--rgb:87,110,116;--wp-admin-theme-color-darker-20:#4c6066;--wp-admin-theme-color-darker-20--rgb:76,96,102;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-ocean{--wp-admin-border-width-focus:1.5px}}body.admin-color-sunrise{--wp-admin-theme-color:#dd823b;--wp-admin-theme-color--rgb:221,130,59;--wp-admin-theme-color-darker-10:#d97426;--wp-admin-theme-color-darker-10--rgb:217,116,38;--wp-admin-theme-color-darker-20:#c36922;--wp-admin-theme-color-darker-20--rgb:195,105,34;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-sunrise{--wp-admin-border-width-focus:1.5px}}@media(min-width:783px){.woocommerce-products-load-sample-product-confirm-modal-overlay{left:35px}}@media(min-width:960px){.woocommerce-products-load-sample-product-confirm-modal-overlay{left:160px}}.woocommerce-products-load-sample-product-confirm-modal .components-truncate.components-text.woocommerce-confirmation-modal__message{color:#50575e}.woocommerce-products-load-sample-product-confirm-modal .woocommerce-confirmation-modal-actions{display:flex;justify-content:flex-end;margin-top:16px}.woocommerce-products-load-sample-product-confirm-modal .woocommerce-confirmation-modal-actions button{margin-left:16px}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5838.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5838.js
deleted file mode 100644
index dc13f913..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/5838.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[5838],{65994:(e,t,r)=>{r.d(t,{Z:()=>l});var a=r(69307),o=r(65736),n=r(7862),s=r.n(n),i=r(86020);function c(e){let{className:t}=e;const r=(0,o.__)("There was an error getting your stats. Please try again.","woocommerce"),n=(0,o.__)("Reload","woocommerce");return(0,a.createElement)(i.EmptyContent,{className:t,title:r,actionLabel:n,actionCallback:()=>{window.location.reload()}})}c.propTypes={className:s().string};const l=c},98552:(e,t,r)=>{r.d(t,{Z:()=>_});var a=r(69307),o=r(94333),n=r(7862),s=r.n(n),i=r(92819),c=r(9818),l=r(75606),d=r(86020),m=r(67221),u=r(81921),p=r(14599),g=r(17844),y=r(73463);class h extends a.Component{constructor(){super(),this.onDateSelect=this.onDateSelect.bind(this),this.onFilterSelect=this.onFilterSelect.bind(this),this.onAdvancedFilterAction=this.onAdvancedFilterAction.bind(this)}onDateSelect(e){const{report:t,addCesSurveyForAnalytics:r}=this.props;r(),(0,p.recordEvent)("datepicker_update",{report:t,...(0,i.omitBy)(e,i.isUndefined)})}onFilterSelect(e){const{report:t,addCesSurveyForAnalytics:r}=this.props,a=e.filter||e["filter-variations"];["single_product","single_category","single_coupon","single_variation"].includes(a)&&r();const o={report:t,filter:e.filter||"all"};"single_product"===e.filter&&(o.filter_variation=e["filter-variations"]||"all"),(0,p.recordEvent)("analytics_filter",o)}onAdvancedFilterAction(e,t){const{report:r,addCesSurveyForAnalytics:a}=this.props;switch(e){case"add":(0,p.recordEvent)("analytics_filters_add",{report:r,filter:t.key});break;case"remove":(0,p.recordEvent)("analytics_filters_remove",{report:r,filter:t.key});break;case"filter":const e=Object.keys(t).reduce(((e,r)=>(e[(0,i.snakeCase)(r)]=t[r],e)),{});a(),(0,p.recordEvent)("analytics_filters_filter",{report:r,...e});break;case"clear_all":(0,p.recordEvent)("analytics_filters_clear_all",{report:r});break;case"match":(0,p.recordEvent)("analytics_filters_all_any",{report:r,value:t.match})}}render(){const{advancedFilters:e,filters:t,path:r,query:o,showDatePicker:n,defaultDateRange:s}=this.props,{period:i,compare:c,before:l,after:m}=(0,u.getDateParamsFromQuery)(o,s),{primary:p,secondary:g}=(0,u.getCurrentDates)(o,s),h={period:i,compare:c,before:l,after:m,primaryDate:p,secondaryDate:g},_=this.context;return(0,a.createElement)(d.ReportFilters,{query:o,siteLocale:y.MV.siteLocale,currency:_.getCurrencyConfig(),path:r,filters:t,advancedFilters:e,showDatePicker:n,onDateSelect:this.onDateSelect,onFilterSelect:this.onFilterSelect,onAdvancedFilterAction:this.onAdvancedFilterAction,dateQuery:h,isoDateFormat:u.isoDateFormat})}}h.contextType=g.CurrencyContext;const _=(0,o.compose)((0,c.withSelect)((e=>{const{woocommerce_default_date_range:t}=e(m.SETTINGS_STORE_NAME).getSetting("wc_admin","wcAdminSettings");return{defaultDateRange:t}})),(0,c.withDispatch)((e=>{const{addCesSurveyForAnalytics:t}=e(l.STORE_KEY);return{addCesSurveyForAnalytics:t}})))(h);h.propTypes={advancedFilters:s().object,filters:s().array,path:s().string.isRequired,query:s().object,showDatePicker:s().bool,report:s().string.isRequired}},95931:(e,t,r)=>{r.d(t,{Z:()=>F});var a=r(5267),o=r(69307),n=r(55609),s=r(92694),i=r(94333),c=r(45904),l=r(9818),d=r(92819),m=r(65736),u=r(7862),p=r.n(u),g=r(75606),y=r(86020),h=r(10431),_=r(49742),b=r(67221),f=r(14599);const w=()=>(0,o.createElement)("svg",{role:"img","aria-hidden":"true",focusable:"false",version:"1.1",xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 24 24"},(0,o.createElement)("path",{d:"M18,9c-0.009,0-0.017,0.002-0.025,0.003C17.72,5.646,14.922,3,11.5,3C7.91,3,5,5.91,5,9.5c0,0.524,0.069,1.031,0.186,1.519 C5.123,11.016,5.064,11,5,11c-2.209,0-4,1.791-4,4c0,1.202,0.541,2.267,1.38,3h18.593C22.196,17.089,23,15.643,23,14 C23,11.239,20.761,9,18,9z M12,16l-4-5h3V8h2v3h3L12,16z"}));var S=r(65994);const C=e=>{const{getHeadersContent:t,getRowsContent:r,getSummary:i,isRequesting:l,primaryData:u,tableData:p,endpoint:g,itemIdField:C,tableQuery:v,compareBy:E,compareParam:F,searchBy:R,labels:k={},...D}=e,{query:q,columnPrefsKey:T}=e,{items:x,query:A}=p,N=q[F]?(0,h.getIdsFromQuery)(q[E]):[],[P,Q]=(0,o.useState)(N),B=(0,o.useRef)(null),{updateUserPreferences:I,...O}=(0,b.useUserPreferences)();if(p.isError||u.isError)return(0,o.createElement)(S.Z,null);let j=[];T&&(j=O&&O[T]?O[T]:j);const M=(e,a,o)=>{const n=i?i(a,o):null;return(0,s.applyFilters)("woocommerce_admin_report_table",{endpoint:g,headers:t(),rows:r(e),totals:a,summary:n,items:x})},L=t=>{const{ids:r}=e;Q(t?r:[])},V=(t,r)=>{const{ids:a}=e;if(r)Q((0,d.uniq)([a[t],...P]));else{const e=P.indexOf(a[t]);Q([...P.slice(0,e),...P.slice(e+1)])}},U=t=>{const{ids:r=[]}=e,a=-1!==P.indexOf(r[t]);return{display:(0,o.createElement)(n.CheckboxControl,{onChange:(0,d.partial)(V,t),checked:a}),value:!1}},Z=l||p.isRequesting||u.isRequesting,K=(0,d.get)(u,["data","totals"],{}),Y=x.totalResults||0,z=Y>0,G=(0,h.getSearchWords)(q).map((e=>({key:e,label:e}))),{data:H}=x,J=M(H,K,Y);let{headers:W,rows:X}=J;const{summary:$}=J;E&&(X=X.map(((e,t)=>[U(t),...e])),W=[(()=>{const{ids:t=[]}=e,r=t.length>0,a=r&&t.length===P.length;return{cellClassName:"is-checkbox-column",key:"compare",label:(0,o.createElement)(n.CheckboxControl,{onChange:L,"aria-label":(0,m.__)("Select All","woocommerce"),checked:a,disabled:!r}),required:!0}})(),...W]);const ee=((e,t)=>t?e.map((e=>({...e,visible:e.required||!t.includes(e.key)}))):e.map((e=>({...e,visible:e.required||!e.hiddenByDefault}))))(W,j);return(0,o.createElement)(o.Fragment,null,(0,o.createElement)("div",{className:"woocommerce-report-table__scroll-point",ref:B,"aria-hidden":!0}),(0,o.createElement)(y.TableCard,(0,a.Z)({className:"woocommerce-report-table",hasSearch:!!R,actions:[E&&(0,o.createElement)(y.CompareButton,{key:"compare",className:"woocommerce-table__compare",count:P.length,helpText:k.helpText||(0,m.__)("Check at least two items below to compare","woocommerce"),onClick:()=>{E&&(0,h.onQueryChange)("compare")(E,F,P.join(","))},disabled:!z},k.compareButton||(0,m.__)("Compare","woocommerce")),R&&(0,o.createElement)(y.Search,{allowFreeTextSearch:!0,inlineTags:!0,key:"search",onChange:t=>{const{baseSearchQuery:r,addCesSurveyForCustomerSearch:a}=e,o=t.map((e=>e.label.replace(",","%2C")));o.length?((0,h.updateQueryString)({filter:void 0,[F]:void 0,[R]:void 0,...r,search:(0,d.uniq)(o).join(",")}),a()):(0,h.updateQueryString)({search:void 0}),(0,f.recordEvent)("analytics_table_filter",{report:g})},placeholder:k.placeholder||(0,m.__)("Search by item name","woocommerce"),selected:G,showClearButton:!0,type:R,disabled:!z}),z&&(0,o.createElement)(n.Button,{key:"download",className:"woocommerce-table__download-button",disabled:Z,onClick:()=>{const{createNotice:t,startExport:r,title:a}=e,o=Object.assign({},q),{data:n,totalResults:s}=x;let i="browser";if(delete o.extended_info,o.search&&delete o[R],n&&n.length===s){const{headers:e,rows:t}=M(n,s);(0,_.downloadCSVFile)((0,_.generateCSVFileName)(a,o),(0,_.generateCSVDataFromTable)(e,t))}else i="email",r(g,A).then((()=>t("success",(0,m.sprintf)((0,m.__)("Your %s Report will be emailed to you.","woocommerce"),a)))).catch((e=>t("error",e.message||(0,m.sprintf)((0,m.__)("There was a problem exporting your %s Report. Please try again.","woocommerce"),a))));(0,f.recordEvent)("analytics_table_download",{report:g,rows:s,download_type:i})}},(0,o.createElement)(w,null),(0,o.createElement)("span",{className:"woocommerce-table__download-button__label"},k.downloadButton||(0,m.__)("Download","woocommerce")))],headers:ee,isLoading:Z,onQueryChange:h.onQueryChange,onColumnsChange:(e,t)=>{const r=W.map((e=>e.key)).filter((t=>!e.includes(t)));if(T&&I({[T]:r}),t){const r={report:g,column:t,status:e.includes(t)?"on":"off"};(0,f.recordEvent)("analytics_table_header_toggle",r)}},onSort:(e,t)=>{(0,h.onQueryChange)("sort")(e,t);const r={report:g,column:e,direction:t};(0,f.recordEvent)("analytics_table_sort",r)},onPageChange:(e,t)=>{B.current.scrollIntoView();const r=B.current.nextSibling.querySelector(".woocommerce-table__table"),a=c.focus.focusable.find(r);a.length&&a[0].focus(),t&&("goto"===t?(0,f.recordEvent)("analytics_table_go_to_page",{report:g,page:e}):(0,f.recordEvent)("analytics_table_page_click",{report:g,direction:t}))},rows:X,rowsPerPage:parseInt(A.per_page,10)||b.QUERY_DEFAULTS.pageSize,summary:$,totalRows:Y},D)))};C.propTypes={baseSearchQuery:p().object,compareBy:p().string,compareParam:p().string,columnPrefsKey:p().string,endpoint:p().string,extendItemsMethodNames:p().shape({getError:p().string,isRequesting:p().string,load:p().string}),extendedItemsStoreName:p().string,getHeadersContent:p().func.isRequired,getRowsContent:p().func.isRequired,getSummary:p().func,itemIdField:p().string,labels:p().shape({compareButton:p().string,downloadButton:p().string,helpText:p().string,placeholder:p().string}),primaryData:p().object,searchBy:p().string,summaryFields:p().arrayOf(p().string),tableData:p().object.isRequired,tableQuery:p().object,title:p().string.isRequired},C.defaultProps={primaryData:{},tableData:{items:{data:[],totalResults:0},query:{}},tableQuery:{},compareParam:"filter",downloadable:!1,onSearch:d.noop,baseSearchQuery:{}};const v=[],E={},F=(0,i.compose)((0,l.withSelect)(((e,t)=>{const{endpoint:r,getSummary:a,isRequesting:o,itemIdField:n,query:s,tableData:i,tableQuery:c,filters:l,advancedFilters:m,summaryFields:u,extendedItemsStoreName:p}=t,g=e(b.REPORTS_STORE_NAME),y=p?e(p):null,{woocommerce_default_date_range:h}=e(b.SETTINGS_STORE_NAME).getSetting("wc_admin","wcAdminSettings"),_=s.search&&!(s[r]&&s[r].length);if(o||_)return E;const f="categories"===r?"products":r,w=a?(0,b.getReportChartData)({endpoint:f,selector:g,dataType:"primary",query:s,filters:l,advancedFilters:m,defaultDateRange:h,fields:u}):E,S=i||(0,b.getReportTableData)({endpoint:r,query:s,selector:g,tableQuery:c,filters:l,advancedFilters:m,defaultDateRange:h}),C=y?function(e,t,r){const{extendItemsMethodNames:a,itemIdField:o}=t,n=r.items.data;if(!(Array.isArray(n)&&n.length&&a&&o))return r;const{[a.getError]:s,[a.isRequesting]:i,[a.load]:c}=e,l={include:n.map((e=>e[o])).join(","),per_page:n.length},m=c(l),u=!!i&&i(l),p=!!s&&s(l),g=n.map((e=>{const t=(0,d.first)(m.filter((t=>e.id===t.id)));return{...e,...t}})),y=r.isRequesting||u,h=r.isError||p;return{...r,isRequesting:y,isError:h,items:{...r.items,data:g}}}(y,t,S):S;return{primaryData:w,ids:n&&C.items.data?C.items.data.map((e=>e[n])):v,tableData:C,query:s}})),(0,l.withDispatch)((e=>{const{startExport:t}=e(b.EXPORT_STORE_NAME),{createNotice:r}=e("core/notices"),{addCesSurveyForCustomerSearch:a}=e(g.STORE_KEY);return{createNotice:r,startExport:t,addCesSurveyForCustomerSearch:a}})))(C)}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js
deleted file mode 100644
index 76ddfb3a..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! For license information please see 6412.js.LICENSE.txt */
-(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[6412],{68483:(e,t,r)=>{"use strict";r.d(t,{Z:()=>re});var n=function(){function e(e){var t=this;this._insertTag=function(e){var r;r=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,r),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var r=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(x,--y):0,h--,10===v&&(h=1,m--),v}function _(){return v=y2||S(v)>3?"":" "}function A(e,t){for(;--t&&_()&&!(v<48||v>102||v>57&&v<65||v>70&&v<97););return j(e,P()+(t<6&&32==k()&&32==_()))}function I(e){for(;_();)switch(v){case e:return y;case 34:case 39:34!==e&&39!==e&&I(v);break;case 40:41===e&&I(e);break;case 92:_()}return y}function R(e,t){for(;_()&&e+v!==57&&(e+v!==84||47!==k()););return"/*"+j(t,y-1)+"*"+o(47===e?e:_())}function L(e){for(;!S(k());)_();return j(e,y)}var F="-ms-",$="-webkit-",B="comm",z="rule",H="decl",G="@keyframes";function V(e,t){for(var r="",n=p(e),a=0;a0&&d($)-b&&g(v>32?Y($+";",n,r,b-1):Y(l($," ","")+";",n,r,b-2),p);break;case 59:$+=";";default:if(g(F=Z($,t,r,m,h,a,f,E,M=[],I=[],b),i),123===S)if(0===h)U($,t,F,F,M,i,b,f,I);else switch(99===y&&110===c($,3)?100:y){case 100:case 109:case 115:U(e,F,F,n&&g(Z(e,F,F,0,0,a,f,E,a,M=[],b),I),a,I,b,f,n?M:I);break;default:U($,F,F,F,[""],I,0,f,I)}}m=h=v=0,O=j=1,E=$="",b=s;break;case 58:b=1+d($),v=x;default:if(O<1)if(123==S)--O;else if(125==S&&0==O++&&125==w())continue;switch($+=o(S),S*O){case 38:j=h>0?1:($+="\f",-1);break;case 44:f[m++]=(d($)-1)*j,j=1;break;case 64:45===k()&&($+=N(_())),y=k(),h=b=d(E=$+=L(P())),S++;break;case 45:45===x&&2==d($)&&(O=0)}}return i}function Z(e,t,r,n,o,i,u,c,d,g,m){for(var h=o-1,b=0===o?i:[""],y=p(b),v=0,x=0,C=0;v0?b[w]+" "+_:l(_,/&\f/g,b[w])))&&(d[C++]=k);return O(e,t,r,0===o?z:c,d,g,m)}function q(e,t,r){return O(e,t,r,B,o(v),f(e,2,-2),0)}function Y(e,t,r,n){return O(e,t,r,H,f(e,0,n),f(e,n+1,-1),n)}var X=function(e,t,r){for(var n=0,a=0;n=a,a=k(),38===n&&12===a&&(t[r]=1),!S(a);)_();return j(e,y)},K=new WeakMap,J=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,r=e.parent,n=e.column===r.column&&e.line===r.line;"rule"!==r.type;)if(!(r=r.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||K.get(r))&&!n){K.set(e,!0);for(var a=[],i=function(e,t){return M(function(e,t){var r=-1,n=44;do{switch(S(n)){case 0:38===n&&12===k()&&(t[r]=1),e[r]+=X(y-1,t,r);break;case 2:e[r]+=N(n);break;case 4:if(44===n){e[++r]=58===k()?"&\f":"",t[r]=e[r].length;break}default:e[r]+=o(n)}}while(n=_());return e}(E(e),t))}(t,a),s=r.props,l=0,u=0;l6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1-webkit-$2-$3$1-moz-"+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ee(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,d(e)-3-(~u(e,"!important")&&10))){case 107:return l(e,":",":-webkit-")+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1-webkit-"+(45===c(e,14)?"inline-":"")+"box$3$1-webkit-$2$3$1-ms-$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return $+e+F+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return $+e+F+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return $+e+F+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return $+e+F+e+e}return e}var te=[function(e,t,r,n){if(e.length>-1&&!e.return)switch(e.type){case H:e.return=ee(e.value,e.length);break;case G:return V([C(e,{value:l(e.value,"@","@-webkit-")})],n);case z:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return V([C(e,{props:[l(t,/:(read-\w+)/,":-moz-$1")]})],n);case"::placeholder":return V([C(e,{props:[l(t,/:(plac\w+)/,":-webkit-input-$1")]}),C(e,{props:[l(t,/:(plac\w+)/,":-moz-$1")]}),C(e,{props:[l(t,/:(plac\w+)/,"-ms-input-$1")]})],n)}return""}))}}];const re=function(e){var t=e.key;if("css"===t){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var a,o,i=e.stylisPlugins||te,s={},l=[];a=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),r=1;r{"use strict";r.r(t),r.d(t,{cache:()=>v,css:()=>b,cx:()=>d,flush:()=>c,getRegisteredStyles:()=>g,hydrate:()=>f,injectGlobal:()=>m,keyframes:()=>h,merge:()=>p,sheet:()=>y});var n=r(68483),a=r(63482),o=r(33041);function i(e,t){if(void 0===e.inserted[t.name])return e.insert("",t,e.sheet,!0)}function s(e,t,r){var n=[],a=(0,o.fp)(e,n,r);return n.length<2?r:a+t(n)}var l=function e(t){for(var r="",n=0;n{"use strict";r.d(t,{C:()=>g,E:()=>k,T:()=>b,_:()=>m,a:()=>x,b:()=>O,c:()=>w,h:()=>d,u:()=>y,w:()=>h});var n=r(99196),a=r(68483),o=r(97364);const i=function(e){var t=new WeakMap;return function(r){if(t.has(r))return t.get(r);var n=e(r);return t.set(r,n),n}};var s=r(10063),l=r.n(s);var u=r(33041),c=r(63482),f=r(15100),d={}.hasOwnProperty,p=(0,n.createContext)("undefined"!=typeof HTMLElement?(0,a.Z)({key:"css"}):null),g=p.Provider,m=function(){return(0,n.useContext)(p)},h=function(e){return(0,n.forwardRef)((function(t,r){var a=(0,n.useContext)(p);return e(t,a,r)}))},b=(0,n.createContext)({}),y=function(){return(0,n.useContext)(b)},v=i((function(e){return i((function(t){return function(e,t){return"function"==typeof t?t(e):(0,o.Z)({},e,t)}(e,t)}))})),x=function(e){var t=(0,n.useContext)(b);return e.theme!==t&&(t=v(t)(e.theme)),(0,n.createElement)(b.Provider,{value:t},e.children)};function O(e){var t,r,a=e.displayName||e.name||"Component",i=function(t,r){var a=(0,n.useContext)(b);return(0,n.createElement)(e,(0,o.Z)({theme:a,ref:r},t))},s=(0,n.forwardRef)(i);return s.displayName="WithTheme("+a+")",t=s,r=e,l()(t,r)}var C="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",w=function(e,t){var r={};for(var n in t)d.call(t,n)&&(r[n]=t[n]);return r[C]=e,r},_=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,u.hC)(t,r,n),(0,f.L)((function(){return(0,u.My)(t,r,n)})),null},k=h((function(e,t,r){var a=e.css;"string"==typeof a&&void 0!==t.registered[a]&&(a=t.registered[a]);var o=e[C],i=[a],s="";"string"==typeof e.className?s=(0,u.fp)(t.registered,i,e.className):null!=e.className&&(s=e.className+" ");var l=(0,c.O)(i,void 0,(0,n.useContext)(b));s+=t.key+"-"+l.name;var f={};for(var p in e)d.call(e,p)&&"css"!==p&&p!==C&&(f[p]=e[p]);return f.ref=r,f.className=s,(0,n.createElement)(n.Fragment,null,(0,n.createElement)(_,{cache:t,serialized:l,isStringTag:"string"==typeof o}),(0,n.createElement)(o,f))}))},33502:(e,t,r)=>{"use strict";r.r(t),r.d(t,{CacheProvider:()=>a.C,ClassNames:()=>m,Global:()=>u,ThemeContext:()=>a.T,ThemeProvider:()=>a.a,__unsafe_useEmotionCache:()=>a._,createElement:()=>l,css:()=>c,jsx:()=>l,keyframes:()=>f,useTheme:()=>a.u,withEmotionCache:()=>a.w,withTheme:()=>a.b});var n=r(99196),a=(r(68483),r(17295)),o=(r(10063),r(33041)),i=r(63482),s=r(15100),l=function(e,t){var r=arguments;if(null==t||!a.h.call(t,"css"))return n.createElement.apply(void 0,r);var o=r.length,i=new Array(o);i[0]=a.E,i[1]=(0,a.c)(e,t);for(var s=2;s{"use strict";r.d(t,{O:()=>g});const n=function(e){for(var t,r=0,n=0,a=e.length;a>=4;++n,a-=4)t=1540483477*(65535&(t=255&e.charCodeAt(n)|(255&e.charCodeAt(++n))<<8|(255&e.charCodeAt(++n))<<16|(255&e.charCodeAt(++n))<<24))+(59797*(t>>>16)<<16),r=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&r)+(59797*(r>>>16)<<16);switch(a){case 3:r^=(255&e.charCodeAt(n+2))<<16;case 2:r^=(255&e.charCodeAt(n+1))<<8;case 1:r=1540483477*(65535&(r^=255&e.charCodeAt(n)))+(59797*(r>>>16)<<16)}return(((r=1540483477*(65535&(r^=r>>>13))+(59797*(r>>>16)<<16))^r>>>15)>>>0).toString(36)},a={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var o=/[A-Z]|^ms/g,i=/_EMO_([^_]+?)_([^]*?)_EMO_/g,s=function(e){return 45===e.charCodeAt(1)},l=function(e){return null!=e&&"boolean"!=typeof e},u=function(e){var t=Object.create(null);return function(e){return void 0===t[e]&&(t[e]=s(r=e)?r:r.replace(o,"-$&").toLowerCase()),t[e];var r}}(),c=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(i,(function(e,t,r){return d={name:t,styles:r,next:d},t}))}return 1===a[e]||s(e)||"number"!=typeof t||0===t?t:t+"px"};function f(e,t,r){if(null==r)return"";if(void 0!==r.__emotion_styles)return r;switch(typeof r){case"boolean":return"";case"object":if(1===r.anim)return d={name:r.name,styles:r.styles,next:d},r.name;if(void 0!==r.styles){var n=r.next;if(void 0!==n)for(;void 0!==n;)d={name:n.name,styles:n.styles,next:d},n=n.next;return r.styles+";"}return function(e,t,r){var n="";if(Array.isArray(r))for(var a=0;a{"use strict";r.r(t),r.d(t,{default:()=>h});var n=r(97364),a=r(99196),o=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;const i=function(e){var t=Object.create(null);return function(e){return void 0===t[e]&&(t[e]=(r=e,o.test(r)||111===r.charCodeAt(0)&&110===r.charCodeAt(1)&&r.charCodeAt(2)<91)),t[e];var r}}();var s=r(17295),l=r(33041),u=r(63482),c=i,f=function(e){return"theme"!==e},d=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?c:f},p=function(e,t,r){var n;if(t){var a=t.shouldForwardProp;n=e.__emotion_forwardProp&&a?function(t){return e.__emotion_forwardProp(t)&&a(t)}:a}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},g=a.useInsertionEffect?a.useInsertionEffect:function(e){e()},m=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,l.hC)(t,r,n),g((function(){return(0,l.My)(t,r,n)})),null};const h=function e(t,r){var o,i,c=t.__emotion_real===t,f=c&&t.__emotion_base||t;void 0!==r&&(o=r.label,i=r.target);var g=p(t,r,c),h=g||d(f),b=!h("as");return function(){var y=arguments,v=c&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==o&&v.push("label:"+o+";"),null==y[0]||void 0===y[0].raw)v.push.apply(v,y);else{v.push(y[0][0]);for(var x=y.length,O=1;O{"use strict";r.d(t,{L:()=>o,j:()=>i});var n=r(99196),a=!!n.useInsertionEffect&&n.useInsertionEffect,o=a||function(e){return e()},i=a||n.useLayoutEffect},57911:(e,t,r)=>{"use strict";function n(e,t,r){var n="";return r.split(" ").forEach((function(r){void 0!==e[r]?t.push(e[r]+";"):n+=r+" "})),n}r.r(t),r.d(t,{getRegisteredStyles:()=>n,insertStyles:()=>a});var a=function(e,t,r){var n=e.key+"-"+t.name;if(!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles),void 0===e.inserted[t.name]){var a=t;do{e.insert(t===a?"."+n:"",a,e.sheet,!0),a=a.next}while(void 0!==a)}}},33041:(e,t,r)=>{"use strict";function n(e,t,r){var n="";return r.split(" ").forEach((function(r){void 0!==e[r]?t.push(e[r]+";"):n+=r+" "})),n}r.d(t,{My:()=>o,fp:()=>n,hC:()=>a});var a=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},o=function(e,t,r){a(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+n:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},41523:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useFlexContext=t.FlexContext=void 0;var n=r(69307);const a=(0,n.createContext)({flexItemDisplay:void 0});t.FlexContext=a,t.useFlexContext=()=>(0,n.useContext)(a)},17397:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=r(80788),u=(0,i.contextConnect)((function(e,t){const r=(0,l.useFlexBlock)(e);return(0,a.createElement)(s.View,(0,o.default)({},r,{ref:t}))}),"FlexBlock");t.default=u},80788:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useFlexBlock=function(e){const t=(0,n.useContextSystem)(e,"FlexBlock");return(0,a.useFlexItem)({isBlock:!0,...t})};var n=r(47493),a=r(7909)},77952:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useFlexBlock",{enumerable:!0,get:function(){return o.useFlexBlock}});var a=n(r(17397)),o=r(80788)},91184:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=r(95088),u=(0,i.contextConnect)((function(e,t){const r=(0,l.useFlexItem)(e);return(0,a.createElement)(s.View,(0,o.default)({},r,{ref:t}))}),"FlexItem");t.default=u},95088:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useFlexItem=function(e){const{className:t,display:r,isBlock:l=!1,...u}=(0,a.useContextSystem)(e,"FlexItem"),c={},f=(0,o.useFlexContext)().flexItemDisplay;c.Base=(0,n.css)({display:r||f},"","");return{...u,className:(0,s.useCx)()(i.Item,c.Base,l&&i.block,t)}};var n=r(33502),a=r(47493),o=r(41523),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(48221)),s=r(29258);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:t})(e)}},7909:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useFlexItem",{enumerable:!0,get:function(){return o.useFlexItem}});var a=n(r(91184)),o=r(95088)},56271:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(27723),l=r(41523),u=r(36138),c=(0,i.contextConnect)((function(e,t){const{children:r,isColumn:n,...i}=(0,s.useFlex)(e);return(0,a.createElement)(l.FlexContext.Provider,{value:{flexItemDisplay:n?"block":void 0}},(0,a.createElement)(u.View,(0,o.default)({},i,{ref:t}),r))}),"Flex");t.default=c},27723:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.useFlex=function(e){const{align:t="center",className:r,direction:n="row",expanded:d=!0,gap:p=2,justify:g="space-between",wrap:m=!1,...h}=(0,s.useContextSystem)(function(e){let{isReversed:t,...r}=e;return void 0!==t?((0,i.default)("Flex isReversed",{alternative:'Flex direction="row-reverse" or "column-reverse"',since:"5.9"}),{...r,direction:t?"row-reverse":"row"}):r}(e),"Flex"),b=Array.isArray(n)?n:[n],y=(0,l.useResponsiveValue)(b),v="string"==typeof y&&!!y.includes("column"),x="string"==typeof y&&y.includes("reverse"),O=(0,f.useCx)();return{...h,className:(0,o.useMemo)((()=>{const e={};return e.Base=(0,a.css)({alignItems:v?"normal":t,flexDirection:y,flexWrap:m?"wrap":void 0,justifyContent:g,height:v&&d?"100%":void 0,width:!v&&d?"100%":void 0,marginBottom:m?`calc(${(0,u.space)(p)} * -1)`:void 0},"",""),e.Items=(0,a.css)(">*+*:not( marquee ){margin-top:",v?(0,u.space)(p):void 0,";",(0,f.rtl)({marginLeft:v||x?void 0:(0,u.space)(p),marginRight:!v&&x?(0,u.space)(p):void 0})(),";}",""),e.WrapItems=(0,a.css)(">*:not( marquee ){margin-bottom:",(0,u.space)(p),";",(0,f.rtl)({marginLeft:!v&&x?(0,u.space)(p):void 0,marginRight:v||x?void 0:(0,u.space)(p)})(),";}>*:last-child:not( marquee ){",(0,f.rtl)({marginLeft:!v&&x?0:void 0,marginRight:v||x?void 0:0})(),";}",""),O(c.Flex,e.Base,m?e.WrapItems:e.Items,v?c.ItemsColumn:c.ItemsRow,r)}),[t,r,O,y,d,p,v,x,g,m,f.rtl.watch()]),isColumn:v}};var a=r(33502),o=r(69307),i=n(r(37180)),s=r(47493),l=r(37666),u=r(74154),c=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=d(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(48221)),f=r(92041);function d(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(d=function(e){return e?r:t})(e)}},33068:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useFlex",{enumerable:!0,get:function(){return o.useFlex}});var a=n(r(56271)),o=r(27723)},14188:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Flex",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"FlexBlock",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"FlexItem",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useFlex",{enumerable:!0,get:function(){return n.useFlex}}),Object.defineProperty(t,"useFlexBlock",{enumerable:!0,get:function(){return o.useFlexBlock}}),Object.defineProperty(t,"useFlexItem",{enumerable:!0,get:function(){return a.useFlexItem}});var n=s(r(33068)),a=s(r(7909)),o=s(r(77952));function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(i=function(e){return e?r:t})(e)}function s(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=i(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=a?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}},48221:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.block=t.ItemsRow=t.ItemsColumn=t.Item=t.Flex=void 0,r(33502);t.Flex={name:"zjik7",styles:"display:flex"};t.Item={name:"qgaee5",styles:"display:block;max-height:100%;max-width:100%;min-height:0;min-width:0"};t.block={name:"82a6rk",styles:"flex:1"};t.ItemsColumn={name:"13nosa1",styles:">*{min-height:0;}"};t.ItemsRow={name:"1pwxzk4",styles:">*{min-width:0;}"}},37971:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=n(r(79596)),u=(0,i.contextConnect)((function(e,t){const r=(0,l.default)(e);return(0,a.createElement)(s.View,(0,o.default)({},r,{ref:t}))}),"Grid");t.default=u},79596:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){const{align:t,alignment:r,className:n,columnGap:f,columns:d=2,gap:p=3,isInline:g=!1,justify:m,rowGap:h,rows:b,templateColumns:y,templateRows:v,...x}=(0,i.useContextSystem)(e,"Grid"),O=Array.isArray(d)?d:[d],C=(0,l.useResponsiveValue)(O),w=Array.isArray(b)?b:[b],_=(0,l.useResponsiveValue)(w),k=y||!!d&&`repeat( ${C}, 1fr )`,P=v||!!b&&`repeat( ${_}, 1fr )`,j=(0,c.useCx)();return{...x,className:(0,o.useMemo)((()=>{const e=(0,s.getAlignmentProps)(r),o=(0,a.css)({alignItems:t,display:g?"inline-grid":"grid",gap:`calc( ${u.default.gridBase} * ${p} )`,gridTemplateColumns:k||void 0,gridTemplateRows:P||void 0,gridRowGap:h,gridColumnGap:f,justifyContent:m,verticalAlign:g?"middle":void 0,...e},"","");return j(o,n)}),[t,r,n,f,j,p,k,P,g,m,h])}};var a=r(33502),o=r(69307),i=r(47493),s=r(80794),l=r(37666),u=n(r(10102)),c=r(29258)},74317:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Grid",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useGrid",{enumerable:!0,get:function(){return o.default}});var a=n(r(37971)),o=n(r(79596))},80794:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAlignmentProps=function(e){return e?r[e]:{}};const r={bottom:{alignItems:"flex-end",justifyContent:"center"},bottomLeft:{alignItems:"flex-start",justifyContent:"flex-end"},bottomRight:{alignItems:"flex-end",justifyContent:"flex-end"},center:{alignItems:"center",justifyContent:"center"},spaced:{alignItems:"center",justifyContent:"space-between"},left:{alignItems:"center",justifyContent:"flex-start"},right:{alignItems:"center",justifyContent:"flex-end"},stretch:{alignItems:"stretch"},top:{alignItems:"flex-start",justifyContent:"center"},topLeft:{alignItems:"flex-start",justifyContent:"flex-start"},topRight:{alignItems:"flex-start",justifyContent:"flex-end"}}},75769:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=r(62644),u=(0,i.contextConnect)((function(e,t){const r=(0,l.useHStack)(e);return(0,a.createElement)(s.View,(0,o.default)({},r,{ref:t}))}),"HStack");t.default=u},62644:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.useHStack=function(e){const{alignment:t="edge",children:r,direction:n,spacing:c=2,...f}=(0,i.useContextSystem)(e,"HStack"),d=(0,l.getAlignmentProps)(t,n),p={children:(0,u.getValidChildren)(r).map(((e,t)=>{const r=e.key||`hstack-${t}`;return(0,i.hasConnectNamespace)(e,["Spacer"])?(0,a.createElement)(s.FlexItem,(0,o.default)({isBlock:!0,key:r},e.props)):e})),direction:n,justify:"center",...d,...f,gap:c};return(0,s.useFlex)(p)};var a=r(69307),o=n(r(16759)),i=r(47493),s=r(14188),l=r(54186),u=r(81198)},37304:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HStack",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useHStack",{enumerable:!0,get:function(){return o.useHStack}});var a=n(r(75769)),o=r(62644)},54186:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAlignmentProps=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"row";if((0,n.isNil)(e))return{};const r="column"===t,i=r?o:a,s=e in i?i[e]:{align:e};return s};var n=r(92819);const a={bottom:{align:"flex-end",justify:"center"},bottomLeft:{align:"flex-start",justify:"flex-end"},bottomRight:{align:"flex-end",justify:"flex-end"},center:{align:"center",justify:"center"},edge:{align:"center",justify:"space-between"},left:{align:"center",justify:"flex-start"},right:{align:"center",justify:"flex-end"},stretch:{align:"stretch"},top:{align:"flex-start",justify:"center"},topLeft:{align:"flex-start",justify:"flex-start"},topRight:{align:"flex-start",justify:"flex-end"}},o={bottom:{justify:"flex-end",align:"center"},bottomLeft:{justify:"flex-start",align:"flex-end"},bottomRight:{justify:"flex-end",align:"flex-end"},center:{justify:"center",align:"center"},edge:{justify:"space-between",align:"center"},left:{justify:"center",align:"flex-start"},right:{justify:"center",align:"flex-end"},stretch:{justify:"stretch"},top:{justify:"flex-start",align:"center"},topLeft:{justify:"flex-start",align:"flex-start"},topRight:{justify:"flex-start",align:"flex-end"}}},99218:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=n(r(963)),u=(0,i.contextConnect)((function(e,t){const r=(0,l.default)(e);return(0,a.createElement)(s.View,(0,o.default)({as:"span"},r,{ref:t}))}),"Text");t.default=u},92609:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getLineHeight=function(e,t){if(t)return t;if(!e)return;let r=`calc(${a.CONFIG.controlHeight} + ${(0,n.space)(2)})`;switch(e){case"large":r=`calc(${a.CONFIG.controlHeightLarge} + ${(0,n.space)(2)})`;break;case"small":r=`calc(${a.CONFIG.controlHeightSmall} + ${(0,n.space)(2)})`;break;case"xSmall":r=`calc(${a.CONFIG.controlHeightXSmall} + ${(0,n.space)(2)})`}return r};var n=r(74154),a=r(92041)},963:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){const{adjustLineHeightForInnerControls:t,align:r,children:m,className:b,color:y,ellipsizeMode:v,isDestructive:x=!1,display:O,highlightEscape:C=!1,highlightCaseSensitive:w=!1,highlightWords:_,highlightSanitize:k,isBlock:P=!1,letterSpacing:j,lineHeight:S,optimizeReadabilityFor:E,size:M,truncate:N=!1,upperCase:T=!1,variant:A,weight:I=d.CONFIG.fontWeight,...R}=(0,i.useContextSystem)(e,"Text");let L=m;const F=Array.isArray(_),$="caption"===M;if(F){if("string"!=typeof m)throw new TypeError("`children` of `Text` must only be `string` types when `highlightWords` is defined");L=(0,c.createHighlighterText)({autoEscape:C,children:m,caseSensitive:w,searchWords:_,sanitize:k})}const B=(0,g.useCx)();let z;!0===N&&(z="auto"),!1===N&&(z="none");const H={...R,className:(0,o.useMemo)((()=>{const e={},a=(0,p.getLineHeight)(t,S);if(e.Base=(0,n.css)({color:y,display:O,fontSize:(0,f.getFontSize)(M),fontWeight:I,lineHeight:a,letterSpacing:j,textAlign:r},"",""),e.upperCase=h,e.optimalTextColor=null,E){const t="dark"===(0,l.getOptimalTextShade)(E);e.optimalTextColor=t?(0,n.css)({color:d.COLORS.black},"",""):(0,n.css)({color:d.COLORS.white},"","")}return B(u.Text,e.Base,e.optimalTextColor,x&&u.destructive,!!F&&u.highlighterText,P&&u.block,$&&u.muted,A&&u[A],T&&e.upperCase,b)}),[t,r,b,y,B,O,P,$,x,F,j,S,E,M,T,A,I]),children:m,ellipsizeMode:v||z},G=(0,s.useTruncate)(H);return!N&&Array.isArray(m)&&(L=o.Children.map(m,(e=>(0,a.isPlainObject)(e)&&"props"in e&&(0,i.hasConnectNamespace)(e,["Link"])?(0,o.cloneElement)(e,{size:e.props.size||"inherit"}):e))),{...G,children:N?G.children:L}};var n=r(33502),a=r(92819),o=r(69307),i=r(47493),s=r(52005),l=r(14617),u=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=m(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(33238)),c=r(31180),f=r(38384),d=r(92041),p=r(92609),g=r(29258);function m(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(m=function(e){return e?r:t})(e)}var h={name:"50zrmy",styles:"text-transform:uppercase"}},43607:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Text",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useText",{enumerable:!0,get:function(){return o.default}});var a=n(r(99218)),o=n(r(963))},33238:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.upperCase=t.positive=t.muted=t.highlighterText=t.destructive=t.block=t.Text=void 0;var n=r(33502),a=r(92041);const o=(0,n.css)("color:",a.COLORS.darkGray.primary,";line-height:",a.CONFIG.fontLineHeightBase,";margin:0;","");t.Text=o;t.block={name:"4zleql",styles:"display:block"};const i=(0,n.css)("color:",a.COLORS.alert.green,";","");t.positive=i;const s=(0,n.css)("color:",a.COLORS.alert.red,";","");t.destructive=s;const l=(0,n.css)("color:",a.COLORS.mediumGray.text,";","");t.muted=l;const u=(0,n.css)("mark{background:",a.COLORS.alert.yellow,";border-radius:2px;box-shadow:0 0 0 1px rgba( 0, 0, 0, 0.05 ) inset,0 -1px 0 rgba( 0, 0, 0, 0.1 ) inset;}","");t.highlighterText=u;t.upperCase={name:"50zrmy",styles:"text-transform:uppercase"}},31180:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.createHighlighterText=function(e){let{activeClassName:t="",activeIndex:r=-1,activeStyle:n,autoEscape:a,caseSensitive:l=!1,children:u,findChunks:c,highlightClassName:f="",highlightStyle:d={},highlightTag:p="mark",sanitize:g,searchWords:m=[],unhighlightClassName:h="",unhighlightStyle:b}=e;if(!u)return null;if("string"!=typeof u)return u;const y=u,v=(0,o.findAll)({autoEscape:a,caseSensitive:l,findChunks:c,sanitize:g,searchWords:m,textToHighlight:y}),x=p;let O,C=-1,w="";return v.map(((e,a)=>{const o=y.substr(e.start,e.end-e.start);if(e.highlight){let e;C++,"object"==typeof f?l?e=f[o]:(f=s(f),e=f[o.toLowerCase()]):e=f;const u=C===+r;w=`${e} ${u?t:""}`,O=!0===u&&null!==n?Object.assign({},d,n):d;const c={children:o,className:w,key:a,style:O};return"string"!=typeof x&&(c.highlightIndex=C),(0,i.createElement)(x,c)}return(0,i.createElement)("span",{children:o,className:h,key:a,style:b})}))};var a=n(r(17770)),o=r(4698),i=r(69307);const s=(0,a.default)((e=>{const t={};for(const r in e)t[r.toLowerCase()]=e[r];return t}))},84771:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=n(r(57394)),u=(0,i.contextConnect)((function(e,t){const r=(0,l.default)(e);return(0,a.createElement)(s.View,(0,o.default)({as:"span"},r,{ref:t}))}),"Truncate");t.default=u},57394:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){const{className:t,children:r,ellipsis:u=s.TRUNCATE_ELLIPSIS,ellipsizeMode:c=s.TRUNCATE_TYPE.auto,limit:f=0,numberOfLines:d=0,...p}=(0,o.useContextSystem)(e,"Truncate"),g=(0,l.useCx)(),m=(0,s.truncateContent)("string"==typeof r?r:"",{ellipsis:u,ellipsizeMode:c,limit:f,numberOfLines:d}),h=c===s.TRUNCATE_TYPE.auto;return{...p,className:(0,a.useMemo)((()=>{const e={};return e.numberOfLines=(0,n.css)("-webkit-box-orient:vertical;-webkit-line-clamp:",d,";display:-webkit-box;overflow:hidden;",""),g(h&&!d&&i.Truncate,h&&!!d&&e.numberOfLines,t)}),[t,g,d,h]),children:m}};var n=r(33502),a=r(69307),o=r(47493),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(78429)),s=r(87221),l=r(29258);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}},52005:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Truncate",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useTruncate",{enumerable:!0,get:function(){return o.default}});var a=n(r(84771)),o=n(r(57394))},78429:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Truncate=void 0,r(33502);t.Truncate={name:"hdknak",styles:"display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"}},87221:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TRUNCATE_TYPE=t.TRUNCATE_ELLIPSIS=t.TRUNCATE_DEFAULT_PROPS=void 0,t.truncateContent=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;const r={...o,...t},{ellipsis:n,ellipsizeMode:s,limit:l}=r;if(s===a.none)return e;let u,c;switch(s){case a.head:u=0,c=l;break;case a.middle:u=Math.floor(l/2),c=Math.floor(l/2);break;default:u=l,c=0}const f=s!==a.auto?i(e,u,c,n):e;return f},t.truncateMiddle=i;var n=r(92819);t.TRUNCATE_ELLIPSIS="…";const a={auto:"auto",head:"head",middle:"middle",tail:"tail",none:"none"};t.TRUNCATE_TYPE=a;const o={ellipsis:"…",ellipsizeMode:a.auto,limit:0,numberOfLines:0};function i(e,t,r,a){if("string"!=typeof e)return"";const o=e.length,i=~~t,s=~~r,l=(0,n.isNil)(a)?"…":a;return 0===i&&0===s||i>=o||s>=o||i+s>=o?e:0===s?e.slice(0,i)+l:e.slice(0,i)+l+e.slice(o-s)}t.TRUNCATE_DEFAULT_PROPS=o},76936:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.REACT_TYPEOF_KEY=t.CONTEXT_COMPONENT_NAMESPACE=t.CONNECT_STATIC_NAMESPACE=t.CONNECTED_NAMESPACE=t.COMPONENT_NAMESPACE=void 0,t.REACT_TYPEOF_KEY="$$typeof",t.COMPONENT_NAMESPACE="data-wp-component",t.CONNECTED_NAMESPACE="data-wp-c16t",t.CONTEXT_COMPONENT_NAMESPACE="data-wp-c5tc8t",t.CONNECT_STATIC_NAMESPACE="__contextSystemKey__"},32067:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.contextConnect=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{memo:n=!1}=r;let l=(0,o.forwardRef)(e);n&&(l=(0,o.memo)(l)),void 0===t&&"undefined"!=typeof process&&process.env;let u=l[i.CONNECT_STATIC_NAMESPACE]||[t];return Array.isArray(t)&&(u=[...u,...t]),"string"==typeof t&&(u=[...u,t]),l.displayName=t,l[i.CONNECT_STATIC_NAMESPACE]=(0,a.uniq)(u),l.selector=`.${(0,s.getStyledClassNameFromKey)(t)}`,l},t.getConnectNamespace=l,t.hasConnectNamespace=function(e,t){return!!e&&("string"==typeof t?l(e).includes(t):!!Array.isArray(t)&&t.some((t=>l(e).includes(t))))};var a=r(92819),o=r(69307),i=(n(r(12560)),r(76936)),s=r(56095);function l(e){if(!e)return[];let t=[];return e[i.CONNECT_STATIC_NAMESPACE]&&(t=e[i.CONNECT_STATIC_NAMESPACE]),e.type&&e.type[i.CONNECT_STATIC_NAMESPACE]&&(t=e.type[i.CONNECT_STATIC_NAMESPACE]),t}},3026:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.useComponentsContext=t.ContextSystemProvider=t.ComponentsContext=void 0;var a=r(69307),o=r(92819);n(r(12560));const i=(0,a.createContext)({});t.ComponentsContext=i;const s=()=>(0,a.useContext)(i);function l(e){let{value:t}=e;const r=s(),n=(0,a.useRef)(t);return function(e,r){const i=(0,a.useRef)(!1);(0,a.useEffect)((()=>{i.current?(0,o.isEqual)(n.current,t)&&n.current!==t&&"undefined"!=typeof process&&process.env:i.current=!0}),r)}(0,[t]),(0,a.useMemo)((()=>(0,o.merge)((0,o.cloneDeep)(r),t)),[r,t])}t.useComponentsContext=s;const u=(0,a.memo)((e=>{let{children:t,value:r}=e;const n=l({value:r});return(0,a.createElement)(i.Provider,{value:n},t)}));t.ContextSystemProvider=u},56095:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.getStyledClassNameFromKey=void 0;var a=r(92819);const o=(0,n(r(17770)).default)((function(e){return`components-${(0,a.kebabCase)(e)}`}));t.getStyledClassNameFromKey=o},47493:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={ContextSystemProvider:!0,useComponentsContext:!0,contextConnect:!0,hasConnectNamespace:!0,getConnectNamespace:!0,useContextSystem:!0};Object.defineProperty(t,"ContextSystemProvider",{enumerable:!0,get:function(){return a.ContextSystemProvider}}),Object.defineProperty(t,"contextConnect",{enumerable:!0,get:function(){return o.contextConnect}}),Object.defineProperty(t,"getConnectNamespace",{enumerable:!0,get:function(){return o.getConnectNamespace}}),Object.defineProperty(t,"hasConnectNamespace",{enumerable:!0,get:function(){return o.hasConnectNamespace}}),Object.defineProperty(t,"useComponentsContext",{enumerable:!0,get:function(){return a.useComponentsContext}}),Object.defineProperty(t,"useContextSystem",{enumerable:!0,get:function(){return i.useContextSystem}});var a=r(3026),o=r(32067),i=r(82295),s=r(76371);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(n,e)||e in t&&t[e]===s[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}}))}))},82295:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.useContextSystem=function(e,t){const r=(0,a.useComponentsContext)();void 0===t&&"undefined"!=typeof process&&process.env;const n=(null==r?void 0:r[t])||{},l={...(0,o.getConnectedNamespace)(),...(0,o.getNamespace)(t)},{_overrides:u,...c}=n,f=Object.entries(c).length?Object.assign({},c,e):e,d=(0,s.useCx)()((0,i.getStyledClassNameFromKey)(t),e.className),p="function"==typeof f.renderChildren?f.renderChildren(f):f.children;for(const e in f)l[e]=f[e];for(const e in u)l[e]=u[e];return l.children=p,l.className=d,l},n(r(12560));var a=r(3026),o=r(40679),i=r(56095),s=r(29258)},40679:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getConnectedNamespace=function(){return{[n.CONNECTED_NAMESPACE]:!0}},t.getNamespace=function(e){return{[n.COMPONENT_NAMESPACE]:e}};var n=r(76936)},76371:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},51469:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(14188),s=r(74317),l=r(79910),u=(0,r(47493).contextConnect)((function(e,t){const{children:r,direction:n="row",templateColumns:u,...c}=(0,l.useControlGroup)(e);return u?(0,a.createElement)(s.Grid,(0,o.default)({gap:0,templateColumns:u},c,{ref:t}),r):(0,a.createElement)(i.Flex,(0,o.default)({direction:n,gap:"-1px"},c,{ref:t}),r)}),"ControlGroup");t.default=u},83401:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useControlGroupContext=t.ControlGroupContext=void 0;var n=r(69307);const a=(0,n.createContext)({});t.ControlGroupContext=a,t.useControlGroupContext=()=>(0,n.useContext)(a)},79910:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useControlGroup=function(e){const{children:t,className:r,direction:u="row",templateColumns:c,...f}=(0,o.useContextSystem)(e,"ControlGroup"),d=(0,a.getValidChildren)(t),p="column"===u,g=!!c,m=(0,l.useCx)(),h=m(s.itemFocus,g&&s.itemGrid,r);return{...f,children:d&&d.map(((e,t)=>{const r=0===t,a=t+1===d.length,o=r&&a,l=!r&&!a,u=(null==e?void 0:e.key)||t;let c,f;r&&(c=p?s.firstRow:s.first),a&&(f=p?s.lastRow:s.last);const g=m(c,l&&s.middle,f),h={isFirst:r,isLast:a,isMiddle:l,isOnly:o,isVertical:p,styles:g};return(0,n.createElement)(i.ControlGroupContext.Provider,{key:u,value:h},e)})),className:h,direction:u,templateColumns:c}};var n=r(69307),a=r(81198),o=r(47493),i=r(83401),s=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=u(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(54409)),l=r(29258);function u(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(u=function(e){return e?r:t})(e)}},48262:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0});var a={ControlGroup:!0};Object.defineProperty(t,"ControlGroup",{enumerable:!0,get:function(){return o.default}});var o=n(r(51469)),i=r(83401);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))}));var s=r(79910);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in t&&t[e]===s[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}}))}))},54409:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.middle=t.lastRow=t.last=t.itemGrid=t.itemFocus=t.firstRow=t.first=void 0,r(33502);t.first={name:"1urpyts",styles:"border-bottom-right-radius:0;border-top-right-radius:0"};t.middle={name:"1ch9yvl",styles:"border-radius:0"};t.last={name:"1ssdcdn",styles:"border-bottom-left-radius:0;border-top-left-radius:0"};t.firstRow={name:"13y804q",styles:"border-bottom-left-radius:0;border-bottom-right-radius:0"};t.lastRow={name:"hu1kbm",styles:"border-top-left-radius:0;border-top-right-radius:0"};t.itemFocus={name:"fx1zz8",styles:">*{&:focus-within{z-index:1;}}"};t.itemGrid={name:"zsolcg",styles:">*+*:not( marquee ){margin-left:-1px;width:calc( 100% + 1px );}"}},10057:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=r(25045),u=(0,i.contextConnect)((function(e,t){const r=(0,l.useControlLabel)(e);return(0,a.createElement)(s.View,(0,o.default)({as:"label"},r,{ref:t}))}),"ControlLabel");t.default=u},25045:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useControlLabel=function(e){const{htmlFor:t,isBlock:r=!1,size:l="medium",truncate:u=!0,...c}=(0,n.useContextSystem)(e,"ControlLabel"),{className:f,...d}=(0,o.useText)({...c,isBlock:r,truncate:u}),p=(0,s.useCx)(),g=(0,a.useFormGroupContextId)(t);return{...d,className:p(i.ControlLabel,i[l],f,r?i.block:i.inline),htmlFor:g}};var n=r(47493),a=r(16535),o=r(43607),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=l(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(41282)),s=r(29258);function l(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(l=function(e){return e?r:t})(e)}},4845:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0});var a={ControlLabel:!0};Object.defineProperty(t,"ControlLabel",{enumerable:!0,get:function(){return o.default}});var o=n(r(10057)),i=r(25045);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))}))},41282:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.small=t.medium=t.large=t.inline=t.block=t.ControlLabel=void 0;var a=r(33502),o=n(r(10102)),i=r(45246);const s=`calc(${o.default.fontSize} * 1.2)`;function l(e){return`calc((${o.default[e]} - ${s}) / 2)`}const u=i.getHighDpi`
- > * {
- position: relative;
- top: 0.5px;
- }
-`,c=(0,a.css)("display:inline-block;line-height:",s,";margin:0;max-width:100%;padding-bottom:",l("controlHeight"),";padding-top:",l("controlHeight"),";&:active{user-select:none;}",u,";","");t.ControlLabel=c;const f=(0,a.css)("padding-bottom:",l("controlHeightLarge"),";padding-top:",l("controlHeightLarge"),";","");t.large=f;const d=(0,a.css)("padding-bottom:",l("controlHeight"),";padding-top:",l("controlHeight"),";","");t.medium=d;const p=(0,a.css)("padding-bottom:",l("controlHeightSmall"),";padding-top:",l("controlHeightSmall"),";","");t.small=p;t.inline={name:"1saok50",styles:"display:inline-block;vertical-align:middle"};t.block={name:"4zleql",styles:"display:block"}},48105:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(81259),s=r(46711),l=n(r(377)),u=n(r(85387)),c=(0,a.memo)((function(e){let{alignLabel:t,children:r,help:n,horizontal:c=!1,id:f,label:d,labelHidden:p,spacing:g=2,truncate:m,...h}=e;const b=(0,a.useMemo)((()=>({id:f,horizontal:c})),[f,c]),y=n?(0,a.createElement)(i.VStack,{expanded:!1,spacing:g},r,(0,a.createElement)(l.default,null,n)):r;return(0,a.createElement)(s.FormGroupContext.Provider,{value:b},(0,a.createElement)(u.default,(0,o.default)({align:t,id:f,labelHidden:p,truncate:m},h),d),y)}));t.default=c},46711:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useFormGroupContextId=t.useFormGroupContext=t.FormGroupContext=void 0;var n=r(69307);const a=(0,n.createContext)({id:void 0,horizontal:!0});t.FormGroupContext=a;const o=()=>(0,n.useContext)(a);t.useFormGroupContext=o,t.useFormGroupContextId=e=>{const t=o().id;return e||t}},377:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(69307),a=r(47493);const o={Text:{variant:"muted"}};var i=(0,n.memo)((function(e){let{children:t}=e;return t?(0,n.createElement)(a.ContextSystemProvider,{value:o},t):null}));t.default=i},85387:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(69307),a=r(4845),o=r(5180),i=(0,n.memo)((function(e){let{children:t,id:r,labelHidden:i=!1,...s}=e;return t?i?(0,n.createElement)(o.VisuallyHidden,{as:"label",htmlFor:null==r?void 0:r.toString()},t):(0,n.createElement)(a.ControlLabel,s,t):null}));t.default=i},75309:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FormGroup=void 0,r(33502);t.FormGroup={name:"1d3w5wq",styles:"width:100%"}},7910:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(74317),l=r(36138),u=n(r(48105)),c=r(74866),f=(0,i.contextConnect)((function(e,t){const{contentProps:r,horizontal:n,...i}=(0,c.useFormGroup)(e);return n?(0,a.createElement)(s.Grid,(0,o.default)({templateColumns:"minmax(0, 1fr) 2fr"},i,{ref:t}),(0,a.createElement)(u.default,r)):(0,a.createElement)(l.View,(0,o.default)({},i,{ref:t}),(0,a.createElement)(u.default,r))}),"FormGroup");t.default=f},16535:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0});var a={FormGroup:!0};Object.defineProperty(t,"FormGroup",{enumerable:!0,get:function(){return o.default}});var o=n(r(7910)),i=r(74866);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))}));var s=r(46711);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(a,e)||e in t&&t[e]===s[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}}))}))},74866:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useFormGroup=function e(t){const{alignLabel:r="left",children:s,className:l,help:u,horizontal:c=!1,id:f,label:d,labelHidden:p=!1,truncate:g=!1,...m}=(0,a.useContextSystem)(t,"FormGroup"),h=(0,n.useInstanceId)(e,"form-group",f);return{...m,className:(0,i.useCx)()(o.FormGroup,l),contentProps:{alignLabel:r,children:s,help:u,id:h,horizontal:c,label:d,labelHidden:p,truncate:g},horizontal:c}};var n=r(94333),a=r(47493),o=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=s(t);if(r&&r.has(e))return r.get(e);var n={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var i=a?Object.getOwnPropertyDescriptor(e,o):null;i&&(i.get||i.set)?Object.defineProperty(n,o,i):n[o]=e[o]}return n.default=e,r&&r.set(e,n),n}(r(75309)),i=r(29258);function s(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(s=function(e){return e?r:t})(e)}},34928:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(48262);Object.keys(n).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===n[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return n[e]}}))}));var a=r(4845);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===a[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return a[e]}}))}));var o=r(16535);Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===o[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return o[e]}}))}));var i=r(70870);Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))}));var s=r(93084);Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===s[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}}))}))},72578:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=(0,i.contextConnect)((function(e,t){const{as:r="span",shortcut:n,className:l,...u}=(0,i.useContextSystem)(e,"Shortcut");if(!n)return null;let c,f;return"string"==typeof n?c=n:(c=n.display,f=n.ariaLabel),(0,a.createElement)(s.View,(0,o.default)({as:r,className:l,"aria-label":f,ref:t},u),c)}),"Shortcut");t.default=l},70870:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Shortcut",{enumerable:!0,get:function(){return a.default}});var a=n(r(72578))},81641:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(89195),s=r(93296),l=r(47493),u=r(83871),c=(0,l.contextConnect)((function(e,t){const{color:r=u.COLORS.black,size:n=s.BASE_SIZE,...c}=(0,l.useContextSystem)(e,"Spinner"),f={transform:`scale(${n/s.BASE_SIZE*s.BASE_SIZE/s.WRAPPER_SIZE})`};return(0,a.createElement)(i.ContainerView,(0,o.default)({},c,{"aria-busy":!0,ref:t,style:{height:n,width:n}}),(0,a.createElement)(i.BarsWrapperView,{"aria-hidden":!0,style:f},(0,a.createElement)(i.BarsView,{style:{color:r}},(0,a.createElement)("div",{className:"InnerBar1"}),(0,a.createElement)("div",{className:"InnerBar2"}),(0,a.createElement)("div",{className:"InnerBar3"}),(0,a.createElement)("div",{className:"InnerBar4"}),(0,a.createElement)("div",{className:"InnerBar5"}),(0,a.createElement)("div",{className:"InnerBar6"}),(0,a.createElement)("div",{className:"InnerBar7"}),(0,a.createElement)("div",{className:"InnerBar8"}),(0,a.createElement)("div",{className:"InnerBar9"}),(0,a.createElement)("div",{className:"InnerBar10"}),(0,a.createElement)("div",{className:"InnerBar11"}),(0,a.createElement)("div",{className:"InnerBar12"}))))}),"Spinner");t.default=c},93084:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Spinner",{enumerable:!0,get:function(){return a.default}});var a=n(r(81641))},89195:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.ContainerView=t.BarsWrapperView=t.BarsView=void 0;var a=n(r(27896)),o=r(93296);const i=(0,a.default)("div",{target:"e1s9yo7h2"})({name:"sfogfj",styles:"display:flex;pointer-events:none;position:relative"});t.ContainerView=i;const s=(0,a.default)("div",{target:"e1s9yo7h1"})("height:",o.WRAPPER_SIZE,"px;left:0;opacity:0.6;position:absolute;top:0;transform-origin:top left;width:",o.WRAPPER_SIZE,"px;");t.BarsWrapperView=s;const l=(0,a.default)("div",{target:"e1s9yo7h0"})({name:"vbzbkf",styles:"color:currentColor;display:inline-flex;height:54px;left:50%;padding:10px;position:absolute;top:50%;transform:translate( -50%, -50% );width:54px;>div{animation:ComponentsUISpinnerFadeAnimation 1000ms linear infinite;background:currentColor;border-radius:50px;height:16%;left:49%;opacity:0;position:absolute;top:43%;width:6%;}@keyframes ComponentsUISpinnerFadeAnimation{from{opacity:1;}to{opacity:0.25;}}.InnerBar1{animation-delay:0s;transform:rotate( 0deg ) translate( 0, -130% );}.InnerBar2{animation-delay:-0.9167s;transform:rotate( 30deg ) translate( 0, -130% );}.InnerBar3{animation-delay:-0.833s;transform:rotate( 60deg ) translate( 0, -130% );}.InnerBar4{animation-delay:-0.7497s;transform:rotate( 90deg ) translate( 0, -130% );}.InnerBar5{animation-delay:-0.667s;transform:rotate( 120deg ) translate( 0, -130% );}.InnerBar6{animation-delay:-0.5837s;transform:rotate( 150deg ) translate( 0, -130% );}.InnerBar7{animation-delay:-0.5s;transform:rotate( 180deg ) translate( 0, -130% );}.InnerBar8{animation-delay:-0.4167s;transform:rotate( 210deg ) translate( 0, -130% );}.InnerBar9{animation-delay:-0.333s;transform:rotate( 240deg ) translate( 0, -130% );}.InnerBar10{animation-delay:-0.2497s;transform:rotate( 270deg ) translate( 0, -130% );}.InnerBar11{animation-delay:-0.167s;transform:rotate( 300deg ) translate( 0, -130% );}.InnerBar12{animation-delay:-0.0833s;transform:rotate( 330deg ) translate( 0, -130% );}"});t.BarsView=l},93296:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WRAPPER_SIZE=t.BASE_SIZE=void 0,t.BASE_SIZE=16,t.WRAPPER_SIZE=36},26037:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.getOptimalTextColor=u,t.getOptimalTextShade=function(e){return"#000000"===u(e)?"dark":"light"};var a=n(r(17770)),o=r(83805),i=n(r(64609));let s;(0,o.extend)([i.default]);const l=(0,a.default)((function(e){var t,r;if("string"!=typeof e)return"";if("string"==typeof(r=e)&&(0,o.colord)(r).isValid())return e;if(!e.includes("var("))return"";if("undefined"==typeof document)return"";const n=function(){if("undefined"!=typeof document){if(!s){const e=document.createElement("div");e.setAttribute("data-g2-color-computation-node",""),document.body.appendChild(e),s=e}return s}}();if(!n)return"";n.style.background=e;const a=null===(t=window)||void 0===t?void 0:t.getComputedStyle(n).background;return n.style.background="",a||""}));function u(e){const t=l(e);return(0,o.colord)(t).isLight()?"#000000":"#ffffff"}},38384:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.PRESET_FONT_SIZES=t.HEADING_FONT_SIZES=t.BASE_FONT_SIZE=void 0,t.getFontSize=s,t.getHeadingFontSize=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3;if(!i.includes(e))return s(e);const t=`fontSizeH${e}`;return a.default[t]};var a=n(r(10102));t.BASE_FONT_SIZE=13;const o={body:13,caption:10,footnote:11,largeTitle:28,subheadline:12,title:20};t.PRESET_FONT_SIZES=o;const i=[1,2,3,4,5,6].flatMap((e=>[e,e.toString()]));function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:13;if(e in o)return s(o[e]);if("number"!=typeof e){const t=parseFloat(e);if(Number.isNaN(t))return e;e=t}const t=`(${e} / 13)`;return`calc(${t} * ${a.default.fontSize})`}t.HEADING_FONT_SIZES=i},45246:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getHighDpi=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),a=1;a{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getValidChildren=function(e){return"string"==typeof e?[e]:n.Children.toArray(e).filter((e=>(0,n.isValidElement)(e)))};var n=r(69307)},14617:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getOptimalTextShade",{enumerable:!0,get:function(){return n.getOptimalTextShade}});var n=r(26037)},74154:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.space=function(e){var t,r;if(void 0===e)return;if(!e)return"0";const n="number"==typeof e?e:Number(e);return"undefined"!=typeof window&&null!==(t=window.CSS)&&void 0!==t&&null!==(r=t.supports)&&void 0!==r&&r.call(t,"margin",e.toString())||Number.isNaN(n)?e.toString():`calc(4px * ${e})`}},37666:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useBreakpointIndex=void 0,t.useResponsiveValue=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=o(t);if(!Array.isArray(e)&&"function"!=typeof e)return e;const n=e||[];return n[r>=n.length?n.length-1:r]};var n=r(69307);const a=["40em","52em","64em"],o=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{defaultIndex:t=0}=e;if("number"!=typeof t)throw new TypeError(`Default breakpoint index should be a number. Got: ${t}, ${typeof t}`);if(t<0||t>a.length-1)throw new RangeError(`Default breakpoint index out of range. Theme has ${a.length} breakpoints, got index ${t}`);const[r,o]=(0,n.useState)(t);return(0,n.useEffect)((()=>{const e=()=>{const e=a.filter((e=>"undefined"!=typeof window&&window.matchMedia(`screen and (min-width: ${e})`).matches)).length;r!==e&&o(e)};return e(),"undefined"!=typeof window&&window.addEventListener("resize",e),()=>{"undefined"!=typeof window&&window.removeEventListener("resize",e)}}),[r]),r};t.useBreakpointIndex=o},10001:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default={huge:"1440px",wide:"1280px","x-large":"1080px",large:"960px",medium:"782px",small:"600px",mobile:"480px","zoomed-in":"280px"}},61800:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.breakpoint=void 0;var a=n(r(10001));t.breakpoint=e=>`@media (min-width: ${a.default[e]})`},83871:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.UI=t.LIGHT_OPACITY_LIGHT=t.LIGHT_GRAY=t.G2=t.DARK_OPACITY_LIGHT=t.DARK_OPACITY=t.DARK_GRAY=t.COLORS=t.BLUE=t.BASE=t.ALERT=t.ADMIN=void 0;var n=r(92819),a=r(7093);const o={black:"#000",white:"#fff"};t.BASE=o;const i={blue:{medium:{focus:"#007cba",focusDark:"#fff"}},gray:{900:"#1e1e1e",700:"#757575",600:"#949494",400:"#ccc",300:"#ddd",200:"#e0e0e0",100:"#f0f0f0"},darkGray:{primary:"#1e1e1e",heading:"#050505"},mediumGray:{text:"#757575"},lightGray:{ui:"#949494",secondary:"#ccc",tertiary:"#e7e8e9"}};t.G2=i;const s={900:"#191e23",800:"#23282d",700:"#32373c",600:"#40464d",500:"#555d66",400:"#606a73",300:"#6c7781",200:"#7e8993",150:"#8d96a0",100:"#8f98a1",placeholder:(0,a.rgba)(i.gray[900],.62)};t.DARK_GRAY=s;const l={900:(0,a.rgba)("#000510",.9),800:(0,a.rgba)("#00000a",.85),700:(0,a.rgba)("#06060b",.8),600:(0,a.rgba)("#000913",.75),500:(0,a.rgba)("#0a1829",.7),400:(0,a.rgba)("#0a1829",.65),300:(0,a.rgba)("#0e1c2e",.62),200:(0,a.rgba)("#162435",.55),100:(0,a.rgba)("#223443",.5),backgroundFill:(0,a.rgba)(s[700],.7)};t.DARK_OPACITY=l;const u={900:(0,a.rgba)("#304455",.45),800:(0,a.rgba)("#425863",.4),700:(0,a.rgba)("#667886",.35),600:(0,a.rgba)("#7b86a2",.3),500:(0,a.rgba)("#9197a2",.25),400:(0,a.rgba)("#95959c",.2),300:(0,a.rgba)("#829493",.15),200:(0,a.rgba)("#8b8b96",.1),100:(0,a.rgba)("#747474",.05)};t.DARK_OPACITY_LIGHT=u;const c={900:"#a2aab2",800:"#b5bcc2",700:"#ccd0d4",600:"#d7dade",500:"#e2e4e7",400:"#e8eaeb",300:"#edeff0",200:"#f3f4f5",100:"#f8f9f9",placeholder:(0,a.rgba)(o.white,.65)};t.LIGHT_GRAY=c;const f={900:(0,a.rgba)(o.white,.5),800:(0,a.rgba)(o.white,.45),700:(0,a.rgba)(o.white,.4),600:(0,a.rgba)(o.white,.35),500:(0,a.rgba)(o.white,.3),400:(0,a.rgba)(o.white,.25),300:(0,a.rgba)(o.white,.2),200:(0,a.rgba)(o.white,.15),100:(0,a.rgba)(o.white,.1),backgroundFill:(0,a.rgba)(c[300],.8)};t.LIGHT_OPACITY_LIGHT=f;const d={wordpress:{700:"#00669b"},dark:{900:"#0071a1"},medium:{900:"#006589",800:"#00739c",700:"#007fac",600:"#008dbe",500:"#00a0d2",400:"#33b3db",300:"#66c6e4",200:"#bfe7f3",100:"#e5f5fa",highlight:"#b3e7fe",focus:"#007cba"}};t.BLUE=d;const p={yellow:"#f0b849",red:"#d94f4f",green:"#4ab866"};t.ALERT=p;const g={theme:`var( --wp-admin-theme-color, ${d.wordpress[700]})`,themeDark10:`var( --wp-admin-theme-color-darker-10, ${d.medium.focus})`};t.ADMIN=g;const m={theme:g.theme,background:o.white,backgroundDisabled:c[200],border:i.gray[700],borderHover:i.gray[700],borderFocus:g.themeDark10,borderDisabled:i.gray[400],borderLight:i.gray[300],label:s[500],textDisabled:s[150],textDark:o.white,textLight:o.black};t.UI=m;const h=Object.assign({},o,{darkGray:(0,n.merge)({},s,i.darkGray),darkOpacity:l,darkOpacityLight:u,mediumGray:i.mediumGray,gray:i.gray,lightGray:(0,n.merge)({},c,i.lightGray),lightGrayLight:f,blue:(0,n.merge)({},d,i.blue),alert:p,admin:g,ui:m});t.COLORS=h;var b=h;t.default=b},7093:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.rgba=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return(0,a.colord)(e).alpha(t).toRgbString()};var a=r(83805),o=n(r(64609));(0,a.extend)([o.default])},10102:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(74154),a=r(83871);const o={controlSurfaceColor:a.COLORS.white,controlTextActiveColor:a.COLORS.ui.theme,controlPaddingX:"12px",controlPaddingXLarge:"calc(12px * 1.3334)",controlPaddingXSmall:"calc(12px / 1.3334)",controlBackgroundColor:a.COLORS.white,controlBorderRadius:"2px",controlBorderColor:a.COLORS.gray[700],controlBoxShadow:"transparent",controlBorderColorHover:a.COLORS.gray[700],controlBoxShadowFocus:`0 0 0 0.5px ${a.COLORS.admin.theme}`,controlDestructiveBorderColor:a.COLORS.alert.red,controlHeight:"36px",controlHeightXSmall:"calc( 36px * 0.6 )",controlHeightSmall:"calc( 36px * 0.8 )",controlHeightLarge:"calc( 36px * 1.2 )",controlHeightXLarge:"calc( 36px * 1.4 )"},i={toggleGroupControlBackgroundColor:o.controlBackgroundColor,toggleGroupControlBorderColor:a.COLORS.ui.border,toggleGroupControlBackdropBackgroundColor:o.controlSurfaceColor,toggleGroupControlBackdropBorderColor:a.COLORS.ui.border,toggleGroupControlBackdropBoxShadow:"transparent",toggleGroupControlButtonColorActive:o.controlBackgroundColor};var s=Object.assign({},o,i,{colorDivider:"rgba(0, 0, 0, 0.1)",colorScrollbarThumb:"rgba(0, 0, 0, 0.2)",colorScrollbarThumbHover:"rgba(0, 0, 0, 0.5)",colorScrollbarTrack:"rgba(0, 0, 0, 0.04)",elevationIntensity:1,radiusBlockUi:"2px",borderWidth:"1px",borderWidthFocus:"1.5px",borderWidthTab:"4px",spinnerSize:16,fontSize:"13px",fontSizeH1:"calc(2.44 * 13px)",fontSizeH2:"calc(1.95 * 13px)",fontSizeH3:"calc(1.56 * 13px)",fontSizeH4:"calc(1.25 * 13px)",fontSizeH5:"13px",fontSizeH6:"calc(0.8 * 13px)",fontSizeInputMobile:"16px",fontSizeMobile:"15px",fontSizeSmall:"calc(0.92 * 13px)",fontSizeXSmall:"calc(0.75 * 13px)",fontLineHeightBase:"1.2",fontWeight:"normal",fontWeightHeading:"600",gridBase:"4px",cardBorderRadius:"2px",cardPaddingXSmall:`${(0,n.space)(2)}`,cardPaddingSmall:`${(0,n.space)(4)}`,cardPaddingMedium:`${(0,n.space)(4)} ${(0,n.space)(6)}`,cardPaddingLarge:`${(0,n.space)(6)} ${(0,n.space)(8)}`,surfaceBackgroundColor:a.COLORS.white,surfaceBackgroundSubtleColor:"#F3F3F3",surfaceBackgroundTintColor:"#F5F5F5",surfaceBorderColor:"rgba(0, 0, 0, 0.1)",surfaceBorderBoldColor:"rgba(0, 0, 0, 0.15)",surfaceBorderSubtleColor:"rgba(0, 0, 0, 0.05)",surfaceBackgroundTertiaryColor:a.COLORS.white,surfaceColor:a.COLORS.white,transitionDuration:"200ms",transitionDurationFast:"160ms",transitionDurationFaster:"120ms",transitionDurationFastest:"100ms",transitionTimingFunction:"cubic-bezier(0.08, 0.52, 0.52, 1)",transitionTimingFunctionControl:"cubic-bezier(0.12, 0.8, 0.32, 1)"});t.default=s},21828:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,t.default={"default.fontFamily":"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif","default.fontSize":"13px","helpText.fontSize":"12px",mobileTextMinFontSize:"16px"}},42619:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.font=function(e){return(0,a.get)(o.default,e,"")};var a=r(92819),o=n(r(21828))},72576:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useCombinedRef",{enumerable:!0,get:function(){return i.useCombinedRef}}),Object.defineProperty(t,"useControlledState",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useControlledValue",{enumerable:!0,get:function(){return s.useControlledValue}}),Object.defineProperty(t,"useCx",{enumerable:!0,get:function(){return l.useCx}}),Object.defineProperty(t,"useLatestRef",{enumerable:!0,get:function(){return u.useLatestRef}}),Object.defineProperty(t,"useUpdateEffect",{enumerable:!0,get:function(){return o.default}});var a=n(r(51642)),o=n(r(38088)),i=r(74382),s=r(4358),l=r(29258),u=r(48224)},74382:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useCombinedRef=function(){for(var e=arguments.length,t=new Array(e),r=0;r{t.forEach((e=>{e&&("function"==typeof e?e(a.current):e.current=a.current)}))}),[t]),a};var n=r(69307)},51642:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(69307),a=r(43146);const o={initial:void 0,fallback:""};t.default=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o;const{initial:r,fallback:i}={...o,...t},[s,l]=(0,n.useState)(e),u=(0,a.isValueDefined)(e);(0,n.useEffect)((()=>{u&&s&&l(void 0)}),[u,s]);const c=(0,a.getDefinedValue)([e,s,r],i),f=e=>{u||l(e)};return[c,f]}},4358:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useControlledValue=function(e){let{defaultValue:t,onChange:r,value:a}=e;const o=void 0!==a,i=o?a:t,[s,l]=(0,n.useState)(i);let u;return u=o&&"function"==typeof r?r:o||"function"!=typeof r?l:e=>{r(e),l(e)},[o?a:s,u]};var n=r(69307)},29258:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useCx=void 0;var n=r(33502),a=r(57911),o=r(22282),i=r(69307);const s=e=>null!=e&&["name","styles"].every((t=>void 0!==e[t]));t.useCx=()=>{const e=(0,n.__unsafe_useEmotionCache)();return(0,i.useCallback)((function(){if(null===e)throw new Error("The `useCx` hook should be only used within a valid Emotion Cache Context");for(var t=arguments.length,r=new Array(t),n=0;ns(t)?((0,a.insertStyles)(e,t,!1),`${e.key}-${t.name}`):t)))}),[e])}},48224:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useLatestRef=function(e){const t=(0,n.useRef)(e);return(0,a.useIsomorphicLayoutEffect)((()=>{t.current=e})),t};var n=r(69307),a=r(94333)},38088:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(69307);t.default=function(e,t){const r=(0,n.useRef)(!1);(0,n.useEffect)((()=>{if(r.current)return e();r.current=!0}),t)}},92041:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(72576);Object.keys(n).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===n[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return n[e]}}))}));var a=r(33946);Object.keys(a).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===a[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return a[e]}}))}))},73990:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reduceMotion=function(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transition";switch(t){case"transition":e="transition-duration: 0ms;";break;case"animation":e="animation-duration: 1ms;";break;default:e="\n\t\t\t\tanimation-duration: 1ms;\n\t\t\t\ttransition-duration: 0ms;\n\t\t\t"}return`\n\t\t@media ( prefers-reduced-motion: reduce ) {\n\t\t\t${e};\n\t\t}\n\t`}},70988:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.convertLTRToRTL=void 0,t.rtl=d;var n=r(33502),a=r(92819),o=r(65736);const i=new RegExp(/-left/g),s=new RegExp(/-right/g),l=new RegExp(/Left/g),u=new RegExp(/Right/g);function c(e){return"left"===e?"right":"right"===e?"left":i.test(e)?e.replace(i,"-right"):s.test(e)?e.replace(s,"-left"):l.test(e)?e.replace(l,"Right"):u.test(e)?e.replace(u,"Left"):e}const f=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,a.mapKeys)(e,((e,t)=>c(t)))};function d(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return()=>t?(0,o.isRTL)()?(0,n.css)(t,""):(0,n.css)(e,""):(0,o.isRTL)()?(0,n.css)(f(e),""):(0,n.css)(e,"")}t.convertLTRToRTL=f,d.watch=()=>(0,o.isRTL)()},33946:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"COLORS",{enumerable:!0,get:function(){return c.COLORS}}),Object.defineProperty(t,"CONFIG",{enumerable:!0,get:function(){return u.default}}),Object.defineProperty(t,"breakpoint",{enumerable:!0,get:function(){return l.breakpoint}}),Object.defineProperty(t,"font",{enumerable:!0,get:function(){return s.font}}),Object.defineProperty(t,"reduceMotion",{enumerable:!0,get:function(){return o.reduceMotion}}),Object.defineProperty(t,"rgba",{enumerable:!0,get:function(){return a.rgba}}),Object.defineProperty(t,"rtl",{enumerable:!0,get:function(){return i.rtl}});var a=r(7093),o=r(73990),i=r(70988),s=r(42619),l=r(61800),u=n(r(10102)),c=r(83871)},43146:(e,t)=>{"use strict";function r(e){return null!=e}Object.defineProperty(t,"__esModule",{value:!0}),t.getDefinedValue=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0;return null!==(e=t.find(r))&&void 0!==e?e:n},t.isValueDefined=r,t.isValueEmpty=function(e){const t=""===e;return!r(e)||t},t.isValueNumeric=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.navigator.language;o.some((e=>t.startsWith(e)))&&(t="en-GB",i.test(e)&&(e=e.replace(/[٠-٩]/g,(e=>"٠١٢٣٤٥٦٧٨٩".indexOf(e))).replace(/[۰-۹]/g,(e=>"۰۱۲۳۴۵۶۷۸۹".indexOf(e))).replace(/٬/g,",").replace(/٫/g,".")));const[r,s]=n(t),l="string"==typeof e?e.replace(r,"").replace(s,".").replace(a,""):e;return!isNaN(parseFloat(l))&&isFinite(l)};const n=e=>{const t=Intl.NumberFormat(e).format(1000.1),r=t[1],n=t[t.length-2];return[new RegExp(`\\${r}`,"g"),new RegExp(`\\${n}`,"g")]},a=/ /g,o=["ar","fa","ur","ckb","ps"],i=/([۰-۹]|[٠-٩])/g},33844:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(36138),l=r(89020),u=(0,i.contextConnect)((function(e,t){const r=(0,l.useVStack)(e);return(0,a.createElement)(s.View,(0,o.default)({},r,{ref:t}))}),"VStack");t.default=u},89020:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useVStack=function(e){const{expanded:t=!1,...r}=(0,n.useContextSystem)(e,"VStack");return(0,a.useHStack)({direction:"column",expanded:t,...r})};var n=r(47493),a=r(37304)},81259:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"VStack",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"useVStack",{enumerable:!0,get:function(){return o.useVStack}});var a=n(r(33844)),o=r(89020)},64008:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;const a=(0,n(r(27896)).default)("div",{target:"em57xhy0"})("");a.selector=".components-view",a.displayName="View";var o=a;t.default=o},36138:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"View",{enumerable:!0,get:function(){return a.default}});var a=n(r(64008))},45706:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var a=r(69307),o=n(r(16759)),i=r(47493),s=r(17224),l=r(36138),u=(0,i.contextConnect)((function(e,t){const{style:r,...n}=(0,i.useContextSystem)(e,"VisuallyHidden");return(0,a.createElement)(l.View,(0,o.default)({ref:t},n,{style:{...s.visuallyHidden,...r||{}}}))}),"VisuallyHidden");t.default=u},5180:(e,t,r)=>{"use strict";var n=r(10113);Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"VisuallyHidden",{enumerable:!0,get:function(){return a.default}});var a=n(r(45706))},17224:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.visuallyHidden=void 0,t.visuallyHidden={border:0,clip:"rect(1px, 1px, 1px, 1px)",WebkitClipPath:"inset( 50% )",clipPath:"inset( 50% )",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",wordWrap:"normal"}},73224:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(69307),a=r(70444);const o=(0,n.createElement)(a.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},(0,n.createElement)(a.Path,{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"}))},83619:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(69307),a=r(70444);const o=(0,n.createElement)(a.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(a.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"}))},86241:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(69307),a=r(70444);const o=(0,n.createElement)(a.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},(0,n.createElement)(a.Path,{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"}))},83805:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r={grad:.9,turn:360,rad:360/(2*Math.PI)},n=function(e){return"string"==typeof e?e.length>0:"number"==typeof e},a=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},o=function(e,t,r){return void 0===t&&(t=0),void 0===r&&(r=1),e>r?r:e>t?e:t},i=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},s=function(e){return{r:o(e.r,0,255),g:o(e.g,0,255),b:o(e.b,0,255),a:o(e.a)}},l=function(e){return{r:a(e.r),g:a(e.g),b:a(e.b),a:a(e.a,3)}},u=/^#([0-9a-f]{3,8})$/i,c=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},f=function(e){var t=e.r,r=e.g,n=e.b,a=e.a,o=Math.max(t,r,n),i=o-Math.min(t,r,n),s=i?o===t?(r-n)/i:o===r?2+(n-t)/i:4+(t-r)/i:0;return{h:60*(s<0?s+6:s),s:o?i/o*100:0,v:o/255*100,a}},d=function(e){var t=e.h,r=e.s,n=e.v,a=e.a;t=t/360*6,r/=100,n/=100;var o=Math.floor(t),i=n*(1-r),s=n*(1-(t-o)*r),l=n*(1-(1-t+o)*r),u=o%6;return{r:255*[n,s,i,i,l,n][u],g:255*[l,n,n,s,i,i][u],b:255*[i,i,l,n,n,s][u],a}},p=function(e){return{h:i(e.h),s:o(e.s,0,100),l:o(e.l,0,100),a:o(e.a)}},g=function(e){return{h:a(e.h),s:a(e.s),l:a(e.l),a:a(e.a,3)}},m=function(e){return d((r=(t=e).s,{h:t.h,s:(r*=((n=t.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:t.a}));var t,r,n},h=function(e){return{h:(t=f(e)).h,s:(a=(200-(r=t.s))*(n=t.v)/100)>0&&a<200?r*n/100/(a<=100?a:200-a)*100:0,l:a/2,a:t.a};var t,r,n,a},b=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,y=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,v=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,x=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,O={string:[[function(e){var t=u.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?a(parseInt(e[3]+e[3],16)/255,2):1}:6===e.length||8===e.length?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:8===e.length?a(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=v.exec(e)||x.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:s({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=b.exec(e)||y.exec(e);if(!t)return null;var n,a,o=p({h:(n=t[1],a=t[2],void 0===a&&(a="deg"),Number(n)*(r[a]||1)),s:Number(t[3]),l:Number(t[4]),a:void 0===t[5]?1:Number(t[5])/(t[6]?100:1)});return m(o)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,a=e.b,o=e.a,i=void 0===o?1:o;return n(t)&&n(r)&&n(a)?s({r:Number(t),g:Number(r),b:Number(a),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,a=e.l,o=e.a,i=void 0===o?1:o;if(!n(t)||!n(r)||!n(a))return null;var s=p({h:Number(t),s:Number(r),l:Number(a),a:Number(i)});return m(s)},"hsl"],[function(e){var t=e.h,r=e.s,a=e.v,s=e.a,l=void 0===s?1:s;if(!n(t)||!n(r)||!n(a))return null;var u=function(e){return{h:i(e.h),s:o(e.s,0,100),v:o(e.v,0,100),a:o(e.a)}}({h:Number(t),s:Number(r),v:Number(a),a:Number(l)});return d(u)},"hsv"]]},C=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=(e=l(this.rgba)).r,r=e.g,n=e.b,i=(o=e.a)<1?c(a(255*o)):"","#"+c(t)+c(r)+c(n)+i;var e,t,r,n,o,i},e.prototype.toRgb=function(){return l(this.rgba)},e.prototype.toRgbString=function(){return t=(e=l(this.rgba)).r,r=e.g,n=e.b,(a=e.a)<1?"rgba("+t+", "+r+", "+n+", "+a+")":"rgb("+t+", "+r+", "+n+")";var e,t,r,n,a},e.prototype.toHsl=function(){return g(h(this.rgba))},e.prototype.toHslString=function(){return t=(e=g(h(this.rgba))).h,r=e.s,n=e.l,(a=e.a)<1?"hsla("+t+", "+r+"%, "+n+"%, "+a+")":"hsl("+t+", "+r+"%, "+n+"%)";var e,t,r,n,a},e.prototype.toHsv=function(){return e=f(this.rgba),{h:a(e.h),s:a(e.s),v:a(e.v),a:a(e.a,3)};var e},e.prototype.invert=function(){return S({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},e.prototype.saturate=function(e){return void 0===e&&(e=.1),S(_(this.rgba,e))},e.prototype.desaturate=function(e){return void 0===e&&(e=.1),S(_(this.rgba,-e))},e.prototype.grayscale=function(){return S(_(this.rgba,-1))},e.prototype.lighten=function(e){return void 0===e&&(e=.1),S(P(this.rgba,e))},e.prototype.darken=function(e){return void 0===e&&(e=.1),S(P(this.rgba,-e))},e.prototype.rotate=function(e){return void 0===e&&(e=15),this.hue(this.hue()+e)},e.prototype.alpha=function(e){return"number"==typeof e?S({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):a(this.rgba.a,3);var t},e.prototype.hue=function(e){var t=h(this.rgba);return"number"==typeof e?S({h:e,s:t.s,l:t.l,a:t.a}):a(t.h)},e.prototype.isEqual=function(e){return this.toHex()===S(e).toHex()},e}(),S=function(e){return e instanceof j?e:new j(e)},E=[];t.Colord=j,t.colord=S,t.extend=function(e){e.forEach((function(e){E.indexOf(e)<0&&(e(j,O),E.push(e))}))},t.getFormat=function(e){return w(e)[1]},t.random=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})}},64609:e=>{e.exports=function(e,t){var r={white:"#ffffff",bisque:"#ffe4c4",blue:"#0000ff",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",antiquewhite:"#faebd7",aqua:"#00ffff",azure:"#f0ffff",whitesmoke:"#f5f5f5",papayawhip:"#ffefd5",plum:"#dda0dd",blanchedalmond:"#ffebcd",black:"#000000",gold:"#ffd700",goldenrod:"#daa520",gainsboro:"#dcdcdc",cornsilk:"#fff8dc",cornflowerblue:"#6495ed",burlywood:"#deb887",aquamarine:"#7fffd4",beige:"#f5f5dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkkhaki:"#bdb76b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",peachpuff:"#ffdab9",darkmagenta:"#8b008b",darkred:"#8b0000",darkorchid:"#9932cc",darkorange:"#ff8c00",darkslateblue:"#483d8b",gray:"#808080",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",deeppink:"#ff1493",deepskyblue:"#00bfff",wheat:"#f5deb3",firebrick:"#b22222",floralwhite:"#fffaf0",ghostwhite:"#f8f8ff",darkviolet:"#9400d3",magenta:"#ff00ff",green:"#008000",dodgerblue:"#1e90ff",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",blueviolet:"#8a2be2",forestgreen:"#228b22",lawngreen:"#7cfc00",indianred:"#cd5c5c",indigo:"#4b0082",fuchsia:"#ff00ff",brown:"#a52a2a",maroon:"#800000",mediumblue:"#0000cd",lightcoral:"#f08080",darkturquoise:"#00ced1",lightcyan:"#e0ffff",ivory:"#fffff0",lightyellow:"#ffffe0",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",linen:"#faf0e6",mediumaquamarine:"#66cdaa",lemonchiffon:"#fffacd",lime:"#00ff00",khaki:"#f0e68c",mediumseagreen:"#3cb371",limegreen:"#32cd32",mediumspringgreen:"#00fa9a",lightskyblue:"#87cefa",lightblue:"#add8e6",midnightblue:"#191970",lightpink:"#ffb6c1",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",mintcream:"#f5fffa",lightslategray:"#778899",lightslategrey:"#778899",navajowhite:"#ffdead",navy:"#000080",mediumvioletred:"#c71585",powderblue:"#b0e0e6",palegoldenrod:"#eee8aa",oldlace:"#fdf5e6",paleturquoise:"#afeeee",mediumturquoise:"#48d1cc",mediumorchid:"#ba55d3",rebeccapurple:"#663399",lightsteelblue:"#b0c4de",mediumslateblue:"#7b68ee",thistle:"#d8bfd8",tan:"#d2b48c",orchid:"#da70d6",mediumpurple:"#9370db",purple:"#800080",pink:"#ffc0cb",skyblue:"#87ceeb",springgreen:"#00ff7f",palegreen:"#98fb98",red:"#ff0000",yellow:"#ffff00",slateblue:"#6a5acd",lavenderblush:"#fff0f5",peru:"#cd853f",palevioletred:"#db7093",violet:"#ee82ee",teal:"#008080",slategray:"#708090",slategrey:"#708090",aliceblue:"#f0f8ff",darkseagreen:"#8fbc8f",darkolivegreen:"#556b2f",greenyellow:"#adff2f",seagreen:"#2e8b57",seashell:"#fff5ee",tomato:"#ff6347",silver:"#c0c0c0",sienna:"#a0522d",lavender:"#e6e6fa",lightgreen:"#90ee90",orange:"#ffa500",orangered:"#ff4500",steelblue:"#4682b4",royalblue:"#4169e1",turquoise:"#40e0d0",yellowgreen:"#9acd32",salmon:"#fa8072",saddlebrown:"#8b4513",sandybrown:"#f4a460",rosybrown:"#bc8f8f",darksalmon:"#e9967a",lightgoldenrodyellow:"#fafad2",snow:"#fffafa",lightgrey:"#d3d3d3",lightgray:"#d3d3d3",dimgray:"#696969",dimgrey:"#696969",olivedrab:"#6b8e23",olive:"#808000"},n={};for(var a in r)n[r[a]]=a;var o={};e.prototype.toName=function(t){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return"transparent";var a,i,s=n[this.toHex()];if(s)return s;if(null==t?void 0:t.closest){var l=this.toRgb(),u=1/0,c="black";if(!o.length)for(var f in r)o[f]=new e(r[f]).toRgb();for(var d in r){var p=(a=l,i=o[d],Math.pow(a.r-i.r,2)+Math.pow(a.g-i.g,2)+Math.pow(a.b-i.b,2));p{"use strict";t.Z=function(e){var t=e.size,r=void 0===t?24:t,n=e.onClick,s=(e.icon,e.className),l=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n{"use strict";t.Z=function(e){var t=e.size,r=void 0===t?24:t,n=e.onClick,s=(e.icon,e.className),l=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n{"use strict";t.Z=function(e){var t=e.size,r=void 0===t?24:t,n=e.onClick,s=(e.icon,e.className),l=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n{"use strict";t.Z=function(e){var t=e.size,r=void 0===t?24:t,n=e.onClick,s=(e.icon,e.className),l=function(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n{e.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}return r.m=e,r.c=t,r.p="",r(0)}([function(e,t,r){e.exports=r(1)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(2);Object.defineProperty(t,"combineChunks",{enumerable:!0,get:function(){return n.combineChunks}}),Object.defineProperty(t,"fillInChunks",{enumerable:!0,get:function(){return n.fillInChunks}}),Object.defineProperty(t,"findAll",{enumerable:!0,get:function(){return n.findAll}}),Object.defineProperty(t,"findChunks",{enumerable:!0,get:function(){return n.findChunks}})},function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.findAll=function(e){var t=e.autoEscape,o=e.caseSensitive,i=void 0!==o&&o,s=e.findChunks,l=void 0===s?n:s,u=e.sanitize,c=e.searchWords,f=e.textToHighlight;return a({chunksToHighlight:r({chunks:l({autoEscape:t,caseSensitive:i,sanitize:u,searchWords:c,textToHighlight:f})}),totalLength:f?f.length:0})};var r=t.combineChunks=function(e){var t=e.chunks;return t.sort((function(e,t){return e.start-t.start})).reduce((function(e,t){if(0===e.length)return[t];var r=e.pop();if(t.start<=r.end){var n=Math.max(r.end,t.end);e.push({highlight:!1,start:r.start,end:n})}else e.push(r,t);return e}),[])},n=function(e){var t=e.autoEscape,r=e.caseSensitive,n=e.sanitize,a=void 0===n?o:n,i=e.searchWords,s=e.textToHighlight;return s=a(s),i.filter((function(e){return e})).reduce((function(e,n){n=a(n),t&&(n=n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"));for(var o=new RegExp(n,r?"g":"gi"),i=void 0;i=o.exec(s);){var l=i.index,u=o.lastIndex;u>l&&e.push({highlight:!1,start:l,end:u}),i.index===o.lastIndex&&o.lastIndex++}return e}),[])};t.findChunks=n;var a=t.fillInChunks=function(e){var t=e.chunksToHighlight,r=e.totalLength,n=[],a=function(e,t,r){t-e>0&&n.push({start:e,end:t,highlight:r})};if(0===t.length)a(0,r,!1);else{var o=0;t.forEach((function(e){a(o,e.start,!1),a(e.start,e.end,!0),o=e.end})),a(o,r,!1)}return n};function o(e){return e}}])},10063:(e,t,r)=>{"use strict";var n=r(99415),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return n.isMemo(e)?i:s[e.$$typeof]||a}s[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[n.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,g=Object.prototype;e.exports=function e(t,r,n){if("string"!=typeof r){if(g){var a=p(r);a&&a!==g&&e(t,a,n)}var i=c(r);f&&(i=i.concat(f(r)));for(var s=l(t),m=l(r),h=0;h{e.exports=function(e,t){var r,n,a=0;function o(){var o,i,s=r,l=arguments.length;e:for(;s;){if(s.args.length===arguments.length){for(i=0;i{"use strict";var r="function"==typeof Symbol&&Symbol.for,n=r?Symbol.for("react.element"):60103,a=r?Symbol.for("react.portal"):60106,o=r?Symbol.for("react.fragment"):60107,i=r?Symbol.for("react.strict_mode"):60108,s=r?Symbol.for("react.profiler"):60114,l=r?Symbol.for("react.provider"):60109,u=r?Symbol.for("react.context"):60110,c=r?Symbol.for("react.async_mode"):60111,f=r?Symbol.for("react.concurrent_mode"):60111,d=r?Symbol.for("react.forward_ref"):60112,p=r?Symbol.for("react.suspense"):60113,g=r?Symbol.for("react.suspense_list"):60120,m=r?Symbol.for("react.memo"):60115,h=r?Symbol.for("react.lazy"):60116,b=r?Symbol.for("react.block"):60121,y=r?Symbol.for("react.fundamental"):60117,v=r?Symbol.for("react.responder"):60118,x=r?Symbol.for("react.scope"):60119;function O(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case c:case f:case o:case s:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case d:case h:case m:case l:return e;default:return t}}case a:return t}}}function C(e){return O(e)===f}t.AsyncMode=c,t.ConcurrentMode=f,t.ContextConsumer=u,t.ContextProvider=l,t.Element=n,t.ForwardRef=d,t.Fragment=o,t.Lazy=h,t.Memo=m,t.Portal=a,t.Profiler=s,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return C(e)||O(e)===c},t.isConcurrentMode=C,t.isContextConsumer=function(e){return O(e)===u},t.isContextProvider=function(e){return O(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return O(e)===d},t.isFragment=function(e){return O(e)===o},t.isLazy=function(e){return O(e)===h},t.isMemo=function(e){return O(e)===m},t.isPortal=function(e){return O(e)===a},t.isProfiler=function(e){return O(e)===s},t.isStrictMode=function(e){return O(e)===i},t.isSuspense=function(e){return O(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===f||e===s||e===i||e===p||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===m||e.$$typeof===l||e.$$typeof===u||e.$$typeof===d||e.$$typeof===y||e.$$typeof===v||e.$$typeof===x||e.$$typeof===b)},t.typeOf=O},99415:(e,t,r)=>{"use strict";e.exports=r(4507)},16759:e=>{function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},97364:(e,t,r)=>{"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;tn})}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js.LICENSE.txt b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js.LICENSE.txt
deleted file mode 100644
index 6f6f2bb3..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/6412.js.LICENSE.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-/** @license React v16.13.1
- * react-is.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.js
deleted file mode 100644
index 82deb6bd..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[71],{84560:(e,t,o)=>{o.d(t,{Z:()=>c});var n=o(69307),r=o(70444);const c=(0,n.createElement)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(r.Path,{d:"M12 3.2c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8 0-4.8-4-8.8-8.8-8.8zm0 16c-4 0-7.2-3.3-7.2-7.2C4.8 8 8 4.8 12 4.8s7.2 3.3 7.2 7.2c0 4-3.2 7.2-7.2 7.2zM11 17h2v-6h-2v6zm0-8h2V7h-2v2z"}))},66602:(e,t,o)=>{o.d(t,{_$:()=>v,U_:()=>h,XG:()=>T,b:()=>m});var n=o(69307),r=o(65736),c=o(55609),a=o(9818),i=o(75606),l=o(46530),s=o(51393),d=o(74693);const m=e=>{let{onClick:t}=e;const{showCesModal:o}=(0,a.useDispatch)(i.STORE_KEY),{isDescendantOf:m}=(0,l.useLayoutContext)();return(0,n.createElement)(c.MenuItem,{onClick:()=>{o({action:"new_product",showDescription:!1,title:(0,r.__)("What do you think of the new product form?","woocommerce"),firstQuestion:(0,r.__)("The product editing screen is easy to use","woocommerce"),secondQuestion:(0,r.__)("The product editing screen's functionality meets my needs","woocommerce"),onsubmitLabel:(0,r.__)("Thanks for the feedback — we'll put it to good use!","woocommerce"),getExtraFieldsToBeShown:(e,t,o)=>(0,n.createElement)(n.Fragment,null,(0,n.createElement)(c.BaseControl,{id:"feedback_additional_thoughts",className:"woocommerce-product-feedback__additional-thoughts",label:(0,n.createInterpolateElement)((0,r.__)("ADDITIONAL THOUGHTS ","woocommerce"),{optional:(0,n.createElement)("span",{className:"woocommerce-product-feedback__optional-input"},(0,r.__)("(OPTIONAL)","woocommerce"))})},(0,n.createElement)(c.TextareaControl,{value:e.additional_thoughts||"",onChange:o=>t({...e,additional_thoughts:o}),help:(null==o?void 0:o.additional_thoughts)||""})),(0,n.createElement)(c.BaseControl,{id:"feedback_email",className:"woocommerce-product-feedback__email",label:(0,n.createInterpolateElement)((0,r.__)("YOUR EMAIL ADDRESS ","woocommerce"),{optional:(0,n.createElement)("span",{className:"woocommerce-product-feedback__optional-input"},(0,r.__)("(OPTIONAL)","woocommerce"))})},(0,n.createElement)(c.TextControl,{value:e.email||"",onChange:o=>t({...e,email:o}),help:(null==o?void 0:o.email)||""}),(0,n.createElement)("span",null,(0,r.__)("In case you want to participate in further discussion and future user research.","woocommerce")))),validateExtraFields:e=>{let{email:t="",additional_thoughts:o=""}=e;const n={};return t.length>0&&!(0,s.isValidEmail)(t)&&(n.email=(0,r.__)("Please enter a valid email address.","woocommerce")),(null==o?void 0:o.length)>500&&(n.additional_thoughts=(0,r.__)("Please enter no more than 500 characters.","woocommerce")),n}},{shouldShowComments:()=>!1},{type:"snackbar"},{block_editor:m("product-block-editor")}),t()},icon:(0,n.createElement)(d.A,null),iconPosition:"right"},(0,r.__)("Share feedback","woocommerce"))};var u=o(74617),_=o(67221),p=o(73463);const h=e=>{let{onClick:t,productId:o}=e;const{showProductMVPFeedbackModal:l}=(0,a.useDispatch)(i.STORE_KEY),{allowTracking:s,resolving:d}=(0,a.useSelect)((e=>{const{getOption:t,hasFinishedResolution:o}=e(_.OPTIONS_STORE_NAME);return{allowTracking:"yes"===(t(i.ALLOW_TRACKING_OPTION_NAME)||"no"),resolving:!o("getOption",[i.ALLOW_TRACKING_OPTION_NAME])}})),m=(0,p.O3)("_feature_nonce"),h=o?(0,u.getAdminLink)(`post.php?post=${o}&action=edit&product_block_editor=0&_feature_nonce=${m}`):(0,u.getAdminLink)(`post-new.php?post_type=product&product_block_editor=0&_feature_nonce=${m}`);return d?null:(0,n.createElement)(c.MenuItem,{onClick:function(){s?l():window.location.href=h,t()},info:(0,r.__)("Save changes and go back to the classic product editing screen.","woocommerce")},(0,r.__)("Turn off the new product form","woocommerce"))};var g=o(23374),w=o(84560),E=o(90495),f=o(65545);const v=e=>{let{onClick:t=(()=>null),onCloseGuide:o}=e;const[a,i]=(0,n.useState)(!1),{isNewUser:l}=(0,f.E)();return(0,n.createElement)(n.Fragment,null,(0,n.createElement)(c.MenuItem,{onClick:()=>{i(!0),t()},icon:(0,n.createElement)(g.Z,{icon:w.Z}),iconPosition:"right"},(0,r.__)("About the form…","woocommerce")),a&&(0,n.createElement)(E.Z,{isNewUser:l,onCloseGuide:()=>{i(!1),o()}}))};var b=o(85597),k=o(10431),C=o(14599),y=o(37798);const T=e=>{let{onClose:t}=e;const[o,i]=(0,n.useState)(!1),{productId:l}=(0,b.UO)(),d=(0,y.useEntityId)("postType","product_variation"),{invalidateVariationList:m,goToNextVariation:u,goToPreviousVariation:p,numberOfVariations:h}=(0,s.__experimentalUseVariationSwitcher)({parentId:l?parseInt(l,10):void 0,variationId:d}),[g]=(0,y.useEntityProp)("postType","product_variation","name"),[w]=(0,y.useEntityProp)("postType","product_variation","status"),{deleteProductVariation:E}=(0,a.useDispatch)(_.EXPERIMENTAL_PRODUCT_VARIATIONS_STORE_NAME),{createSuccessNotice:f,createErrorNotice:v}=(0,a.useDispatch)("core/notices");return(0,n.createElement)(n.Fragment,null,(0,n.createElement)(c.MenuGroup,null,(0,n.createElement)(c.MenuItem,{isDestructive:!0,variant:"tertiary",onClick:function(){(0,C.recordEvent)("product_dropdown_option_click",{selected_option:"delete_variation",product_id:l,variation_id:d,product_status:w}),i(!0)}},(0,r.__)("Delete variation","woocommerce"))),o&&(0,n.createElement)(s.RemoveConfirmationModal,{title:(0,r.sprintf)((0,r.__)("Delete %s?","woocommerce"),g),description:(0,n.createElement)(n.Fragment,null,(0,n.createElement)("p",null,(0,r.__)("If you continue, this variation with all of its information will be deleted and customers will no longer be able to purchase it.","woocommerce")),(0,n.createElement)("strong",null,(0,r.__)("Deleted variations cannot be restored.","woocommerce"))),onRemove:async function(){return(0,C.recordEvent)("product_delete_variation_modal",{action:"delete",product_id:l,variation_id:d,product_status:w}),E({product_id:l,id:d}).then((()=>{f((0,r.sprintf)((0,r.__)("%s deleted.","woocommerce"),g)),i(!1),t(),m(),h&&h>1?u()||p():(0,k.navigateTo)({url:(0,k.getNewPath)({},`/product/${l}`)})})).catch((()=>{v((0,r.__)("Failed to delete the variation.","woocommerce"))}))},onCancel:function(){(0,C.recordEvent)("product_delete_variation_modal",{action:"close",product_id:l,variation_id:d,product_status:w}),i(!1)}}))}},81596:(e,t,o)=>{o.d(t,{e:()=>d});var n=o(69307),r=o(55609),c=o(65736),a=o(14599),i=o(9818),l=o(37798),s=o(66602);const d=e=>{var t;let{productType:o="product",onClose:d}=e;const[m]=(0,l.useEntityProp)("postType",o,"id"),u=(0,i.useSelect)((e=>{const{getEntityRecord:t}=e("core");return t("postType",o,m)}),[m,o]),_=e=>{(0,a.recordEvent)("product_dropdown_option_click",{selected_option:e,product_type:u.type,product_status:u.status})};return(0,n.createElement)(n.Fragment,null,(0,n.createElement)(r.MenuGroup,{label:(0,c.__)("New product form (Beta)","woocommerce")},(0,n.createElement)(s._$,{onClick:()=>{_("about")},onCloseGuide:()=>{d()}}),(0,n.createElement)(s.b,{onClick:()=>{_("feedback"),d()}})),(0,n.createElement)(r.MenuGroup,null,(0,n.createElement)(s.U_,{productId:null!==(t=u.parent_id)&&void 0!==t?t:u.id,onClick:()=>{_("classic_editor"),d()}})))}},90495:(e,t,o)=>{o.d(t,{Z:()=>p});var n=o(69307),r=o(65736),c=o(83849),a=o.n(c),i=o(55609),l=o(70444);const s=e=>{let{isSelected:t}=e;return(0,n.createElement)(l.SVG,{width:"8",height:"8",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,n.createElement)(l.Circle,{cx:"4",cy:"4",r:"4",fill:t?"#419ECD":"#E1E3E6"}))};function d(e){let{currentPage:t,numberOfPages:o,setCurrentPage:c}=e;return(0,n.createElement)("ul",{className:"components-guide__page-control","aria-label":(0,r.__)("Guide controls","woocommerce")},Array.from({length:o}).map(((e,a)=>(0,n.createElement)("li",{key:a,"aria-current":a===t?"step":void 0},(0,n.createElement)(i.Button,{key:a,icon:(0,n.createElement)(s,{isSelected:a===t}),"aria-label":(0,r.sprintf)((0,r.__)("Page %1$d of %2$d","woocommerce"),a+1,o),onClick:()=>c(a)})))))}const m=function(e){let{className:t,contentLabel:o,finishButtonText:c=(0,r.__)("Finish","woocommerce"),finishButtonLink:l,onFinish:s,pages:m=[]}=e;const u=(0,n.useRef)(null),[_,p]=(0,n.useState)(0),h=_>0,g=_{h&&p(_-1)},E=()=>{g&&p(_+1)};return 0===m.length?null:(0,n.createElement)(i.Modal,{className:a()("components-guide",t),title:o,onRequestClose:()=>{s(_,"close")},onKeyDown:e=>{"ArrowLeft"===e.code?(w(),e.preventDefault()):"ArrowRight"===e.code&&(E(),e.preventDefault())},ref:u},(0,n.createElement)("div",{className:"components-guide__container"},(0,n.createElement)("div",{className:"components-guide__page"},m[_].image,m.length>1&&(0,n.createElement)(d,{currentPage:_,numberOfPages:m.length,setCurrentPage:p}),m[_].content),(0,n.createElement)("div",{className:"components-guide__footer"},h&&(0,n.createElement)(i.Button,{className:"components-guide__back-button",variant:"tertiary",onClick:w},(0,r.__)("Previous","woocommerce")),g&&(0,n.createElement)(i.Button,{className:"components-guide__forward-button",variant:"primary",onClick:E},(0,r.__)("Next","woocommerce")),!g&&(0,n.createElement)(i.Button,{className:"components-guide__finish-button",variant:"primary",href:l,target:l?"_blank":void 0,rel:l?"noopener":void 0,onClick:()=>s(_,"finish")},c))))},u=e=>{let{page:t}=e;return(0,n.createElement)(n.Fragment,null,(0,n.createElement)("h1",{className:"woocommerce-block-editor-guide__heading"},t.heading),(0,n.createElement)("p",{className:"woocommerce-block-editor-guide__text"},t.text))},_=e=>{let{page:t}=e;return(0,n.createElement)("div",{className:`woocommerce-block-editor-guide__header woocommerce-block-editor-guide__header-${t.index+1}`})},p=e=>{let{onCloseGuide:t}=e;const o=[{heading:(0,r.__)("Fresh and modern interface","woocommerce"),text:(0,r.__)("Everything you need to create and sell your products, all in one place. From photos and descriptions to pricing and inventory, all of your product settings can be found here.","woocommerce")},{heading:(0,r.__)("Content-rich product descriptions","woocommerce"),text:(0,r.__)("Show off what's great about your products and engage your customers with content-rich product descriptions. Add images, videos, and any other content they might need to make a purchase.","woocommerce")},{heading:(0,r.__)("Lightning fast performance ","woocommerce"),text:(0,r.__)("Get your products listed and available for purchase in no time! Our modern technology ensures a reliable and streamlined experience.","woocommerce")},{heading:(0,r.__)("More features are on the way","woocommerce"),text:(0,r.__)("We're actively working on adding more features to the product form, including the ability to add digital products, variations, and more. Watch this space!","woocommerce")}].map(((e,t)=>({content:(0,n.createElement)(u,{page:e}),image:(0,n.createElement)(_,{page:{...e,index:t}})})));return(0,n.createElement)(m,{className:"woocommerce-block-editor-guide",contentLabel:"",finishButtonText:(0,r.__)("Tell me more","woocommerce"),finishButtonLink:"https://woo.com/product-form-beta",onFinish:t,pages:o})}},65545:(e,t,o)=>{o.d(t,{E:()=>a});var n=o(67221),r=o(9818);const c={status:"publish",_fields:["id"]},a=()=>(0,r.useSelect)((e=>{const{getProductsTotalCount:t,hasFinishedResolution:o}=e(n.PRODUCTS_STORE_NAME),r=t(c,0);return{publishedProductsCount:r,loadingPublishedProductsCount:!o("getProductsTotalCount",[c,0]),isNewUser:r<1}}))}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.style.css b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.style.css
deleted file mode 100644
index 8e8304e6..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/71.style.css
+++ /dev/null
@@ -1 +0,0 @@
-.woocommerce-block-editor-guide__header{width:312px;height:222px;background-color:#f6f7f7;background-size:cover}.woocommerce-block-editor-guide__header-1{background-image:url(../838cedcc9d9dfff18d8a.png)}.woocommerce-block-editor-guide__header-2{background-image:url(../df4b3b75be51b9e11f96.png)}.woocommerce-block-editor-guide__header-3{background-image:url(../cc33bd6b007cb731bcc3.png)}.woocommerce-block-editor-guide__header-4{background-image:url(../7a66c49439f3a365c211.png)}.woocommerce-block-editor-guide.components-modal__frame{max-width:312px}.woocommerce-block-editor-guide__heading,.woocommerce-block-editor-guide__text{margin:12px 24px}.woocommerce-block-editor-guide__heading{font-size:24px;line-height:30px}.woocommerce-block-editor-guide .components-guide__page-control{margin-top:12px}.woocommerce-block-editor-guide .components-guide__footer{width:unset;margin:24px}.woocommerce-block-editor-guide .components-guide__footer .components-guide__back-button{left:0;padding:8px 12px}.woocommerce-block-editor-guide .components-guide__footer .components-guide__forward-button{right:0;padding:8px 12px}.woocommerce-block-editor-guide .components-guide__footer .components-guide__finish-button{right:0}.woocommerce-block-editor-tourkit .woocommerce-tour-kit-step{width:381px}.woocommerce-block-editor-tourkit .woocommerce-tour-kit-step .components-card__header{align-items:flex-start;height:194px;background-color:#d4aaf6;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzgxIiBoZWlnaHQ9IjE5NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTg2NV8xOTgzNjcpIj48cGF0aCBmaWxsPSIjRDRBQUY2IiBkPSJNMCAwaDM4MXYxOTQuMzFIMHoiLz48ZyBjbGlwLXBhdGg9InVybCgjY2xpcDFfMTg2NV8xOTgzNjcpIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNNTQuNTc2IDI3LjM3NWgyNzIuODMydjE2Ny4xMjNINTQuNTc2eiIvPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMl8xODY1XzE5ODM2NykiPjxyZWN0IHg9IjEyOC4xNjIiIHk9IjExMy41NjIiIHdpZHRoPSI1MS4yODQiIGhlaWdodD0iNS45MjMiIHJ4PSIxLjc5NSIgZmlsbD0iI0UwRTBFMCIvPjxyZWN0IHg9IjEyOC40MTciIHk9Ijg5Ljc4OCIgd2lkdGg9Ijc0Ljk0NCIgaGVpZ2h0PSIzLjU5IiByeD0iMS43OTUiIGZpbGw9IiNFMEUwRTAiLz48cmVjdCB4PSIxNDIuNTIxIiB5PSIxMjMuODYzIiB3aWR0aD0iMzUuMjgzIiBoZWlnaHQ9IjMuMzg1IiByeD0iMS42OTIiIGZpbGw9IiNFMEUwRTAiLz48cmVjdCB4PSIxMjguNDE3IiB5PSI5Ni4wNzEiIHdpZHRoPSI5NC4yNCIgaGVpZ2h0PSIzLjU5IiByeD0iMS43OTUiIGZpbGw9IiNFMEUwRTAiLz48cmVjdCB4PSIxNDIuNTIxIiB5PSIxMzEuNDU5IiB3aWR0aD0iNDQuMzEiIGhlaWdodD0iMy4zODUiIHJ4PSIxLjY5MiIgZmlsbD0iI0UwRTBFMCIvPjxyZWN0IHg9IjEyOC40MTciIHk9IjEwMi4zNTQiIHdpZHRoPSIzMy4yMDkiIGhlaWdodD0iMy41OSIgcng9IjEuNzk1IiBmaWxsPSIjRTBFMEUwIi8+PHJlY3QgeD0iMTQyLjUyMSIgeT0iMTM5LjA1NSIgd2lkdGg9IjM1LjI4MyIgaGVpZ2h0PSIzLjM4NSIgcng9IjEuNjkyIiBmaWxsPSIjRTBFMEUwIi8+PGVsbGlwc2UgY3g9IjEzNi41MDYiIGN5PSIxMjUuNjYyIiByeD0iMS4zNTgiIHJ5PSIxLjM5OSIgZmlsbD0iIzAwN0NCQSIvPjxyZWN0IHg9IjEyOC40MTIiIHk9IjEyMi45MTMiIHdpZHRoPSIxMC43NTUiIGhlaWdodD0iNS40OTciIHJ4PSIyLjc0OCIgc3Ryb2tlPSIjQkJCIiBzdHJva2Utd2lkdGg9Ii41Ii8+PGVsbGlwc2UgY3g9IjEzMS40NiIgY3k9IjEzMy4yNTgiIHJ4PSIxLjM1OCIgcnk9IjEuMzk5IiBmaWxsPSIjQ0NDIi8+PHJlY3QgeD0iMTI4LjQxMiIgeT0iMTMwLjUxIiB3aWR0aD0iMTAuNzU1IiBoZWlnaHQ9IjUuNDk3IiByeD0iMi43NDgiIHN0cm9rZT0iI0JCQiIgc3Ryb2tlLXdpZHRoPSIuNSIvPjxlbGxpcHNlIGN4PSIxMzYuNTA2IiBjeT0iMTQwLjg1NSIgcng9IjEuMzU4IiByeT0iMS4zOTkiIGZpbGw9IiMwMDdDQkEiLz48cmVjdCB4PSIxMjguNDEyIiB5PSIxMzguMTA2IiB3aWR0aD0iMTAuNzU1IiBoZWlnaHQ9IjUuNDk3IiByeD0iMi43NDgiIHN0cm9rZT0iI0JCQiIgc3Ryb2tlLXdpZHRoPSIuNSIvPjwvZz48cmVjdCB4PSIxMjguMDQ4IiB5PSI3NC4yMzMiIHdpZHRoPSI1MS4yODQiIGhlaWdodD0iNS45MjMiIHJ4PSIxLjc5NSIgZmlsbD0iI0UwRTBFMCIvPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwM18xODY1XzE5ODM2NykiIGZpbGw9IiNFMEUwRTAiPjxyZWN0IHg9IjEyOC4zNDciIHk9IjE1NS45NzkiIHdpZHRoPSIzNy4yNTciIGhlaWdodD0iMTQuNzkzIiByeD0iMS43OTUiLz48cmVjdCBvcGFjaXR5PSIuNiIgeD0iMTY5LjA5NyIgeT0iMTU1Ljk3OSIgd2lkdGg9IjM3LjI1NyIgaGVpZ2h0PSIxNC43OTMiIHJ4PSIxLjc5NSIvPjxyZWN0IG9wYWNpdHk9Ii42IiB4PSIyMDkuODQ3IiB5PSIxNTUuOTc5IiB3aWR0aD0iMzcuMjU3IiBoZWlnaHQ9IjE0Ljc5MyIgcng9IjEuNzk1Ii8+PHJlY3QgeD0iMTI4LjQxNCIgeT0iMTc3Ljk2OSIgd2lkdGg9IjUxLjI4NCIgaGVpZ2h0PSI1LjkyMyIgcng9IjEuNzk1Ii8+PHJlY3QgeD0iMTI4LjQxNCIgeT0iMTg4LjEyNCIgd2lkdGg9IjM1LjI4MyIgaGVpZ2h0PSIzLjM4NSIgcng9IjEuNjkyIi8+PC9nPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwNF8xODY1XzE5ODM2NykiPjxtYXNrIGlkPSJhIiBmaWxsPSIjZmZmIj48cGF0aCBkPSJNNTQuMzcxIDI3LjExM2gyNzMuMjk3VjU3LjE4SDU0LjM3MVYyNy4xMTN6Ii8+PC9tYXNrPjxwYXRoIGQ9Ik01NC4zNzEgMjcuMTEzaDI3My4yOTdWNTcuMThINTQuMzcxVjI3LjExM3oiIGZpbGw9IiNmZmYiLz48cmVjdCB4PSIxNjAuMTIzIiB5PSIzNC4zMTIiIHdpZHRoPSI2MC45NDgiIGhlaWdodD0iNC42NTgiIHJ4PSIxLjc5NSIgZmlsbD0iI0UwRTBFMCIvPjxyZWN0IHg9IjI4OC40ODgiIHk9IjMxLjc3MSIgd2lkdGg9IjMzLjM3NiIgaGVpZ2h0PSI5Ljc0IiByeD0iMS43OTUiIGZpbGw9IiMwMDdDQkEiLz48cmVjdCB4PSIyNTguOTgxIiB5PSIzNC4zMTIiIHdpZHRoPSIyNC42NjkiIGhlaWdodD0iNC42NTgiIHJ4PSIxLjc5NSIgZmlsbD0iI0UwRTBFMCIvPjxyZWN0IHg9IjEyNS43MzIiIHk9IjQ4LjQxMSIgd2lkdGg9IjIxLjI4MyIgaGVpZ2h0PSIzLjM4OCIgcng9IjEuNjk0IiBmaWxsPSIjRTBFMEUwIi8+PHBhdGggZmlsbD0iIzAwN0NCQSIgZD0iTTEyNS43MzIgNTUuNjExaDIxLjI4M3YxLjY5NGgtMjEuMjgzeiIvPjxyZWN0IHg9IjE3OS45MDgiIHk9IjQ4LjQxMSIgd2lkdGg9IjIxLjI4MyIgaGVpZ2h0PSIzLjM4OCIgcng9IjEuNjk0IiBmaWxsPSIjRTBFMEUwIi8+PHJlY3QgeD0iMTUyLjgyIiB5PSI0OC40MTEiIHdpZHRoPSIyMS4yODMiIGhlaWdodD0iMy4zODgiIHJ4PSIxLjY5NCIgZmlsbD0iI0UwRTBFMCIvPjxyZWN0IHg9IjIwNi45OTYiIHk9IjQ4LjQxMSIgd2lkdGg9IjIxLjI4MyIgaGVpZ2h0PSIzLjM4OCIgcng9IjEuNjk0IiBmaWxsPSIjRTBFMEUwIi8+PHJlY3QgeD0iMjM0LjA4MyIgeT0iNDguNDExIiB3aWR0aD0iMjEuMjgzIiBoZWlnaHQ9IjMuMzg4IiByeD0iMS42OTQiIGZpbGw9IiNFMEUwRTAiLz48cGF0aCBmaWxsPSIjMjMyODJEIiBkPSJNNTQuMTI3IDI2LjkyNmgxNy45NTF2MTcuOTVINTQuMTI3eiIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNjcuNjU0IDM1LjcwOGE0Ljc1MiA0Ljc1MiAwIDAwLTQuNzQ1LTQuNzQzIDQuNzQ5IDQuNzQ5IDAgMDAtNC43NDQgNC43NDMgNC43NDYgNC43NDYgMCAwMDQuNzQ0IDQuNzQ0IDQuNzQ5IDQuNzQ5IDAgMDA0Ljc0NS00Ljc0NHptLTUuNzk4IDIuNTQ3bC0xLjYxOC00LjM0Yy4yNjEtLjAxLjU1NS0uMDM4LjU1NS0uMDM4LjIzOC0uMDI4LjIxLS41MzYtLjAyOC0uNTI2IDAgMC0uNjg4LjA1Mi0xLjEyNS4wNTItLjA4NSAwLS4xNzUgMC0uMjc1LS4wMDVhNC4yMDkgNC4yMDkgMCAwMTMuNTQ0LTEuOTA3YzEuMTA2IDAgMi4xMTEuNDEzIDIuODcgMS4xMS0uMzIyLS4wNTItLjc4Mi4xODUtLjc4Mi43NSAwIC4zMDcuMTYzLjU3LjM0OC44NjdsLjA3OS4xMjljLjE2Ni4yOS4yNi42NDUuMjYgMS4xNjcgMCAuNzA3LS42NjMgMi4zNzEtLjY2MyAyLjM3MWwtMS40MzgtMy45N2EuOTYzLjk2MyAwIDAwLjM4OS0uMDhjLjIzNy0uMDI0LjIwOS0uNTkzLS4wMjgtLjU3OSAwIDAtLjY4NC4wNTctMS4xMy4wNTctLjQxMiAwLTEuMTA1LS4wNTctMS4xMDUtLjA1Ny0uMjM3LS4wMTQtLjI2Ni41Ny0uMDI5LjU3OWwuNDM3LjAzOC41OTggMS42MTctLjg1OSAyLjc2NXptNC41OC0yLjU3NGwtLjAxMS4wMjdhNTQ4LjM5NiA1NDguMzk2IDAgMDAtMS4zODUgMy42OWMxLjI2Ni0uNzMgMi4wODctMi4xMyAyLjA4Ny0zLjY5IDAtLjczLS4xNjYtMS40MDQtLjQ5OC0yLjAxNi4xNDMgMS4wOTYtLjA3NyAxLjY3OC0uMTk0IDEuOTg5em0tNS4zNzcgMy44NjVjLTEuNDE0LS42ODMtMi4zNjctMi4xNjMtMi4zNjctMy44MzggMC0uNjE2LjEwOS0xLjE3Ni4zNDEtMS43MDNsLjQyNyAxLjE2OGMuNTMxIDEuNDU4IDEuMDY0IDIuOTE3IDEuNiA0LjM3M3ptMy4xMzYuMTY2TDYyLjk3MSAzNi40Yy0uMjI1LjY2NS0uNDUzIDEuMzMtLjY4IDEuOTk3bC0uNDY4IDEuMzdjLjM0MS4xMDUuNzEyLjE1NyAxLjA4Ni4xNTcuNDUxIDAgLjg3OC0uMDc2IDEuMjg2LS4yMTN6IiBmaWxsPSIjZmZmIi8+PC9nPjxwYXRoIGQ9Ik0zMjcuNjY4IDU2LjUwN0g1NC4zNzF2MS4zNDZoMjczLjI5N3YtMS4zNDZ6IiBmaWxsPSIjRjBGMEYwIiBtYXNrPSJ1cmwoI2EpIi8+PC9nPjxwYXRoIGQ9Ik0zMzUuOTQzIDEyNS42NzdjNC40NDgtNC4yMTEgMy43NTktMTkuNzUxIDMuNzU5LTIxLjU2NGguNzg1YzAgMS44MTMtLjY4NiAxNy4zNTMgMy43NTkgMjEuNTY0IDMuMjgxIDMuMTA3IDUuNTkgNC4yOTIgMTkuMDYzIDQuMjkydi43MDljLTEzLjQ3MyAwLTE1Ljc4MiAxLjE4NS0xOS4wNjMgNC4yOTItNC40NDkgNC4yMTItMy43NTkgMTkuNzUxLTMuNzU5IDIxLjU2NGgtLjc4NWMwLTEuODEzLjY4Ni0xNy4zNTItMy43NTktMjEuNTY0LTMuMjgyLTMuMTA3LTUuNTkxLTQuMjkyLTE5LjA2NC00LjI5MnYtLjcwOWMxMy40NzMgMCAxNS43ODItMS4xODUgMTkuMDY0LTQuMjkyeiIgZmlsbD0iI0Y0Qzc1OSIvPjxwYXRoIG9wYWNpdHk9Ii41IiBkPSJNMjk2LjI3MyAxMTguNDQ1YzEuOTA2LTEuODAzIDEuNjExLTguNDU1IDEuNjExLTkuMjMyaC4zMzZjMCAuNzc3LS4yOTQgNy40MjkgMS42MTEgOS4yMzIgMS40MDUgMS4zMyAyLjM5NSAxLjgzOCA4LjE2NyAxLjgzOHYuMzAzYy01Ljc3MiAwLTYuNzYyLjUwNy04LjE2NyAxLjgzOC0xLjkwNiAxLjgwMi0xLjYxMSA4LjQ1NS0xLjYxMSA5LjIzMWgtLjMzNmMwLS43NzYuMjk0LTcuNDI5LTEuNjExLTkuMjMxLTEuNDA2LTEuMzMxLTIuMzk1LTEuODM4LTguMTY3LTEuODM4di0uMzAzYzUuNzcyIDAgNi43NjEtLjUwOCA4LjE2Ny0xLjgzOHoiIGZpbGw9IiNGNEM3NTkiLz48cGF0aCBvcGFjaXR5PSIuNyIgZD0iTTMwNC40OTYgMTU4LjY1NWMyLjQzMS0yLjMwMiAyLjA1NC0xMC43OTMgMi4wNTQtMTEuNzg0aC40MjljMCAuOTkxLS4zNzUgOS40ODIgMi4wNTQgMTEuNzg0IDEuNzkzIDEuNjk4IDMuMDU1IDIuMzQ1IDEwLjQxNyAyLjM0NXYuMzg3Yy03LjM2MiAwLTguNjI0LjY0OC0xMC40MTcgMi4zNDYtMi40MzEgMi4zMDEtMi4wNTQgMTAuNzkzLTIuMDU0IDExLjc4M2gtLjQyOWMwLS45OS4zNzUtOS40ODItMi4wNTQtMTEuNzgzLTEuNzkzLTEuNjk4LTMuMDU1LTIuMzQ2LTEwLjQxNy0yLjM0NlYxNjFjNy4zNjIgMCA4LjYyNC0uNjQ3IDEwLjQxNy0yLjM0NXoiIGZpbGw9IiNGNEM3NTkiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJjbGlwMF8xODY1XzE5ODM2NyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgzODF2MTk0LjMxSDB6Ii8+PC9jbGlwUGF0aD48Y2xpcFBhdGggaWQ9ImNsaXAxXzE4NjVfMTk4MzY3Ij48cGF0aCBmaWxsPSIjZmZmIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1NC41NzYgMjcuMzc1KSIgZD0iTTAgMGgyNzIuODMydjE2Ny4xMjNIMHoiLz48L2NsaXBQYXRoPjxjbGlwUGF0aCBpZD0iY2xpcDJfMTg2NV8xOTgzNjciPjxwYXRoIGZpbGw9IiNmZmYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyNy45NjggODkuNzg4KSIgZD0iTTAgMGgxMjYuMTAydjYxLjQ4MUgweiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJjbGlwM18xODY1XzE5ODM2NyI+PHBhdGggZmlsbD0iI2ZmZiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI4LjE3MyAxNTUuNzIxKSIgZD0iTTAgMGgxMTkuMzcxdjQ4LjkxNUgweiIvPjwvY2xpcFBhdGg+PGNsaXBQYXRoIGlkPSJjbGlwNF8xODY1XzE5ODM2NyI+PHBhdGggZD0iTTU0LjM3MSAyNy4xMTNoMjczLjI5N1Y1Ny4xOEg1NC4zNzFWMjcuMTEzeiIgZmlsbD0iI2ZmZiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==);border-bottom:1px solid #e0e0e0;margin-bottom:16px}.woocommerce-block-editor-tourkit .woocommerce-tour-kit-step__heading .woocommerce-pill{margin-left:12px;background-color:#f5e6b3;border:0}:root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}body.admin-color-light{--wp-admin-theme-color:#0085ba;--wp-admin-theme-color--rgb:0,133,186;--wp-admin-theme-color-darker-10:#0073a1;--wp-admin-theme-color-darker-10--rgb:0,115,161;--wp-admin-theme-color-darker-20:#006187;--wp-admin-theme-color-darker-20--rgb:0,97,135;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-light{--wp-admin-border-width-focus:1.5px}}body.admin-color-modern{--wp-admin-theme-color:#3858e9;--wp-admin-theme-color--rgb:56,88,233;--wp-admin-theme-color-darker-10:#2145e6;--wp-admin-theme-color-darker-10--rgb:33,69,230;--wp-admin-theme-color-darker-20:#183ad6;--wp-admin-theme-color-darker-20--rgb:24,58,214;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-modern{--wp-admin-border-width-focus:1.5px}}body.admin-color-blue{--wp-admin-theme-color:#096484;--wp-admin-theme-color--rgb:9,100,132;--wp-admin-theme-color-darker-10:#07526c;--wp-admin-theme-color-darker-10--rgb:7,82,108;--wp-admin-theme-color-darker-20:#064054;--wp-admin-theme-color-darker-20--rgb:6,64,84;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-blue{--wp-admin-border-width-focus:1.5px}}body.admin-color-coffee{--wp-admin-theme-color:#46403c;--wp-admin-theme-color--rgb:70,64,60;--wp-admin-theme-color-darker-10:#383330;--wp-admin-theme-color-darker-10--rgb:56,51,48;--wp-admin-theme-color-darker-20:#2b2724;--wp-admin-theme-color-darker-20--rgb:43,39,36;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-coffee{--wp-admin-border-width-focus:1.5px}}body.admin-color-ectoplasm{--wp-admin-theme-color:#523f6d;--wp-admin-theme-color--rgb:82,63,109;--wp-admin-theme-color-darker-10:#46365d;--wp-admin-theme-color-darker-10--rgb:70,54,93;--wp-admin-theme-color-darker-20:#3a2c4d;--wp-admin-theme-color-darker-20--rgb:58,44,77;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-ectoplasm{--wp-admin-border-width-focus:1.5px}}body.admin-color-midnight{--wp-admin-theme-color:#e14d43;--wp-admin-theme-color--rgb:225,77,67;--wp-admin-theme-color-darker-10:#dd382d;--wp-admin-theme-color-darker-10--rgb:221,56,45;--wp-admin-theme-color-darker-20:#d02c21;--wp-admin-theme-color-darker-20--rgb:208,44,33;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-midnight{--wp-admin-border-width-focus:1.5px}}body.admin-color-ocean{--wp-admin-theme-color:#627c83;--wp-admin-theme-color--rgb:98,124,131;--wp-admin-theme-color-darker-10:#576e74;--wp-admin-theme-color-darker-10--rgb:87,110,116;--wp-admin-theme-color-darker-20:#4c6066;--wp-admin-theme-color-darker-20--rgb:76,96,102;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-ocean{--wp-admin-border-width-focus:1.5px}}body.admin-color-sunrise{--wp-admin-theme-color:#dd823b;--wp-admin-theme-color--rgb:221,130,59;--wp-admin-theme-color-darker-10:#d97426;--wp-admin-theme-color-darker-10--rgb:217,116,38;--wp-admin-theme-color-darker-20:#c36922;--wp-admin-theme-color-darker-20--rgb:195,105,34;--wp-admin-border-width-focus:2px}@media(-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){body.admin-color-sunrise{--wp-admin-border-width-focus:1.5px}}.woocommerce-admin-page__add-product .woocommerce-store-alerts,.woocommerce-admin-page__product_product-id .woocommerce-store-alerts,.woocommerce-admin-page__product_product-id_variation_variation-id .woocommerce-store-alerts{display:none}.woocommerce-admin-page__add-product .woocommerce-layout__primary,.woocommerce-admin-page__product_product-id .woocommerce-layout__primary,.woocommerce-admin-page__product_product-id_variation_variation-id .woocommerce-layout__primary{margin-left:0;margin-right:0;margin-bottom:0}.woocommerce-admin-page__add-product .woocommerce-layout .woocommerce-layout__main,.woocommerce-admin-page__product_product-id .woocommerce-layout .woocommerce-layout__main,.woocommerce-admin-page__product_product-id_variation_variation-id .woocommerce-layout .woocommerce-layout__main{padding:0}.woocommerce-admin-page__add-product .interface-interface-skeleton,.woocommerce-admin-page__product_product-id .interface-interface-skeleton,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton{background-color:#fff;position:static}.woocommerce-admin-page__add-product .interface-interface-skeleton__sidebar,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__sidebar,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__sidebar{width:280px}.woocommerce-admin-page__add-product .interface-interface-skeleton__footer,.woocommerce-admin-page__add-product .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__header{background-color:#fff;position:fixed;width:calc(100% - 160px);left:160px;z-index:80}@media(max-width:960px){.woocommerce-admin-page__add-product .interface-interface-skeleton__footer,.woocommerce-admin-page__add-product .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__header{left:36px;width:calc(100% - 36px)}}@media(max-width:782px){.woocommerce-admin-page__add-product .interface-interface-skeleton__footer,.woocommerce-admin-page__add-product .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__header{left:0;width:100%}}.woocommerce-admin-page__add-product.folded .interface-interface-skeleton__footer,.woocommerce-admin-page__add-product.folded .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id.folded .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id.folded .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id_variation_variation-id.folded .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id_variation_variation-id.folded .interface-interface-skeleton__header{width:calc(100% - 36px);left:36px}.woocommerce-admin-page__add-product .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__header{top:32px}@media(max-width:782px){.woocommerce-admin-page__add-product .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__header,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__header{top:46px}}.woocommerce-admin-page__add-product .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id .interface-interface-skeleton__footer,.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__footer{display:flex}.woocommerce-admin-page__product_product-id_variation_variation-id .interface-interface-skeleton__content{overflow:hidden}@media(max-width:782px){html.interface-interface-skeleton__html-container{position:inherit}}html.interface-interface-skeleton__html-container .woocommerce-layout__footer.at-bottom{border-top:none;box-shadow:none}body{background-color:#fff}body.woocommerce-admin-page.woocommerce_page_wc-admin #wpbody-content{min-height:calc(100vh - 96px)}
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/7846.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/7846.js
deleted file mode 100644
index eb0a0b15..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/7846.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[7846],{39055:(t,e,n)=>{n.d(e,{Z:()=>r});var s=n(72526);function r(t,e){t.classList?t.classList.add(e):(0,s.Z)(t,e)||("string"==typeof t.className?t.className=t.className+" "+e:t.setAttribute("class",(t.className&&t.className.baseVal||"")+" "+e))}},72526:(t,e,n)=>{function s(t,e){return t.classList?!!e&&t.classList.contains(e):-1!==(" "+(t.className.baseVal||t.className)+" ").indexOf(" "+e+" ")}n.d(e,{Z:()=>s})},16452:(t,e,n)=>{function s(t,e){return t.replace(new RegExp("(^|\\s)"+e+"(?:\\s|$)","g"),"$1").replace(/\s+/g," ").replace(/^\s*|\s*$/g,"")}function r(t,e){t.classList?t.classList.remove(e):"string"==typeof t.className?t.className=s(t.className,e):t.setAttribute("class",s(t.className&&t.className.baseVal||"",e))}n.d(e,{Z:()=>r})},28443:(t,e,n)=>{n.d(e,{Z:()=>f});var s=n(97364),r=n(50513),i=n(7739),o=n(39055),a=n(16452),l=n(99196),u=n.n(l),c=n(56405),p=function(t,e){return t&&e&&e.split(" ").forEach((function(e){return(0,a.Z)(t,e)}))},d=function(t){function e(){for(var e,n=arguments.length,s=new Array(n),r=0;r{n.d(e,{ZP:()=>v});var s=n(50513),r=n(7739),i=n(99196),o=n.n(i),a=n(91850),l=n.n(a),u=n(556),c=n(7777),p="unmounted",d="exited",f="entering",h="entered",E="exiting",m=function(t){function e(e,n){var s;s=t.call(this,e,n)||this;var r,i=n&&!n.isMounting?e.enter:e.appear;return s.appearStatus=null,e.in?i?(r=d,s.appearStatus=f):r=h:r=e.unmountOnExit||e.mountOnEnter?p:d,s.state={status:r},s.nextCallback=null,s}(0,r.Z)(e,t),e.getDerivedStateFromProps=function(t,e){return t.in&&e.status===p?{status:d}:null};var n=e.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(t){var e=null;if(t!==this.props){var n=this.state.status;this.props.in?n!==f&&n!==h&&(e=f):n!==f&&n!==h||(e=E)}this.updateStatus(!1,e)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var t,e,n,s=this.props.timeout;return t=e=n=s,null!=s&&"number"!=typeof s&&(t=s.exit,e=s.enter,n=void 0!==s.appear?s.appear:e),{exit:t,enter:e,appear:n}},n.updateStatus=function(t,e){void 0===t&&(t=!1),null!==e?(this.cancelNextCallback(),e===f?this.performEnter(t):this.performExit()):this.props.unmountOnExit&&this.state.status===d&&this.setState({status:p})},n.performEnter=function(t){var e=this,n=this.props.enter,s=this.context?this.context.isMounting:t,r=this.props.nodeRef?[s]:[l().findDOMNode(this),s],i=r[0],o=r[1],a=this.getTimeouts(),c=s?a.appear:a.enter;!t&&!n||u.Z.disabled?this.safeSetState({status:h},(function(){e.props.onEntered(i)})):(this.props.onEnter(i,o),this.safeSetState({status:f},(function(){e.props.onEntering(i,o),e.onTransitionEnd(c,(function(){e.safeSetState({status:h},(function(){e.props.onEntered(i,o)}))}))})))},n.performExit=function(){var t=this,e=this.props.exit,n=this.getTimeouts(),s=this.props.nodeRef?void 0:l().findDOMNode(this);e&&!u.Z.disabled?(this.props.onExit(s),this.safeSetState({status:E},(function(){t.props.onExiting(s),t.onTransitionEnd(n.exit,(function(){t.safeSetState({status:d},(function(){t.props.onExited(s)}))}))}))):this.safeSetState({status:d},(function(){t.props.onExited(s)}))},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(t,e){e=this.setNextCallback(e),this.setState(t,e)},n.setNextCallback=function(t){var e=this,n=!0;return this.nextCallback=function(s){n&&(n=!1,e.nextCallback=null,t(s))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(t,e){this.setNextCallback(e);var n=this.props.nodeRef?this.props.nodeRef.current:l().findDOMNode(this),s=null==t&&!this.props.addEndListener;if(n&&!s){if(this.props.addEndListener){var r=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],i=r[0],o=r[1];this.props.addEndListener(i,o)}null!=t&&setTimeout(this.nextCallback,t)}else setTimeout(this.nextCallback,0)},n.render=function(){var t=this.state.status;if(t===p)return null;var e=this.props,n=e.children,r=(e.in,e.mountOnEnter,e.unmountOnExit,e.appear,e.enter,e.exit,e.timeout,e.addEndListener,e.onEnter,e.onEntering,e.onEntered,e.onExit,e.onExiting,e.onExited,e.nodeRef,(0,s.Z)(e,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return o().createElement(c.Z.Provider,{value:null},"function"==typeof n?n(t,r):o().cloneElement(o().Children.only(n),r))},e}(o().Component);function x(){}m.contextType=c.Z,m.propTypes={},m.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:x,onEntering:x,onEntered:x,onExit:x,onExiting:x,onExited:x},m.UNMOUNTED=p,m.EXITED=d,m.ENTERING=f,m.ENTERED=h,m.EXITING=E;const v=m},61586:(t,e,n)=>{n.d(e,{Z:()=>f});var s=n(50513),r=n(97364),i=n(88041),o=n(7739),a=n(99196),l=n.n(a),u=n(7777),c=n(87099),p=Object.values||function(t){return Object.keys(t).map((function(e){return t[e]}))},d=function(t){function e(e,n){var s,r=(s=t.call(this,e,n)||this).handleExited.bind((0,i.Z)(s));return s.state={contextValue:{isMounting:!0},handleExited:r,firstRender:!0},s}(0,o.Z)(e,t);var n=e.prototype;return n.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},n.componentWillUnmount=function(){this.mounted=!1},e.getDerivedStateFromProps=function(t,e){var n=e.children,s=e.handleExited;return{children:e.firstRender?(0,c.Kg)(t,s):(0,c.Rp)(t,n,s),firstRender:!1}},n.handleExited=function(t,e){var n=(0,c.n)(this.props.children);t.key in n||(t.props.onExited&&t.props.onExited(e),this.mounted&&this.setState((function(e){var n=(0,r.Z)({},e.children);return delete n[t.key],{children:n}})))},n.render=function(){var t=this.props,e=t.component,n=t.childFactory,r=(0,s.Z)(t,["component","childFactory"]),i=this.state.contextValue,o=p(this.state.children).map(n);return delete r.appear,delete r.enter,delete r.exit,null===e?l().createElement(u.Z.Provider,{value:i},o):l().createElement(u.Z.Provider,{value:i},l().createElement(e,r,o))},e}(l().Component);d.propTypes={},d.defaultProps={component:"div",childFactory:function(t){return t}};const f=d},7777:(t,e,n)=>{n.d(e,{Z:()=>r});var s=n(99196);const r=n.n(s)().createContext(null)},556:(t,e,n)=>{n.d(e,{Z:()=>s});const s={disabled:!1}},87099:(t,e,n)=>{n.d(e,{Kg:()=>o,Rp:()=>a,n:()=>r});var s=n(99196);function r(t,e){var n=Object.create(null);return t&&s.Children.map(t,(function(t){return t})).forEach((function(t){n[t.key]=function(t){return e&&(0,s.isValidElement)(t)?e(t):t}(t)})),n}function i(t,e,n){return null!=n[e]?n[e]:t.props[e]}function o(t,e){return r(t.children,(function(n){return(0,s.cloneElement)(n,{onExited:e.bind(null,n),in:!0,appear:i(n,"appear",t),enter:i(n,"enter",t),exit:i(n,"exit",t)})}))}function a(t,e,n){var o=r(t.children),a=function(t,e){function n(n){return n in e?e[n]:t[n]}t=t||{},e=e||{};var s,r=Object.create(null),i=[];for(var o in t)o in e?i.length&&(r[o]=i,i=[]):i.push(o);var a={};for(var l in e){if(r[l])for(s=0;s{function s(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}n.d(e,{Z:()=>s})},97364:(t,e,n)=>{function s(){return s=Object.assign?Object.assign.bind():function(t){for(var e=1;es})},7739:(t,e,n)=>{n.d(e,{Z:()=>r});var s=n(64781);function r(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,(0,s.Z)(t,e)}},50513:(t,e,n)=>{function s(t,e){if(null==t)return{};var n,s,r={},i=Object.keys(t);for(s=0;s=0||(r[n]=t[n]);return r}n.d(e,{Z:()=>s})},64781:(t,e,n)=>{function s(t,e){return s=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},s(t,e)}n.d(e,{Z:()=>s})}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js
deleted file mode 100644
index c2e84a1f..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see 8626.js.LICENSE.txt */
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[8626],{28226:(t,e,n)=>{n.d(e,{e:()=>p});var r=n(99196),i=n(44966),a=n(47090),s=n(59412),o=n(93459);function c(t){var e=r.useRef();return e.current||(e.current={v:t()}),e.current.v}var u=function(){return u=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0)&&!(r=a.next()).done;)s.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return s};function f(t){return t}function p(t){for(var e=[],n=1;n{n.d(e,{v:()=>o});var r=n(99196),i=n(44966);n(93459);var a=n(83018),s=function(t,e){return t===e};function o(t,e,n,o){void 0===n&&(n=s);var c=(0,r.useRef)(null),u=(0,r.useCallback)((function(e){return t.subscribe(e).unsubscribe}),[t]),d=(0,r.useCallback)((function(){return o?o(t):function(t,e){if((0,a.cs)(t)){if(0===t.status&&e.current)return e.current;var n=(0,a.Uz)(t);return e.current=0===t.status?n:null,n}return"state"in t?t.state:void 0}(t,c)}),[t,o]);return(0,i.useSyncExternalStoreWithSelector)(u,d,d,e,n)}},83018:(t,e,n)=>{n.d(e,{AM:()=>s,Uz:()=>i,cs:()=>a});var r=n(47090);function i(t){return 0!==t.status?t.getSnapshot():t.machine.initialState}function a(t){return"state"in t&&"machine"in t}function s(t,e,n){if(t.status===r.TM.NotStarted)return!0;var i=void 0===n.changed&&(Object.keys(n.children).length>0||"boolean"==typeof e.changed);return!(n.changed||i)}},93459:(t,e,n)=>{n.d(e,{Z:()=>r});const r=n(99196).useLayoutEffect},26876:(t,e,n)=>{var r=n(99196),i="function"==typeof Object.is?Object.is:function(t,e){return t===e&&(0!==t||1/t==1/e)||t!=t&&e!=e},a=r.useState,s=r.useEffect,o=r.useLayoutEffect,c=r.useDebugValue;function u(t){var e=t.getSnapshot;t=t.value;try{var n=e();return!i(t,n)}catch(t){return!0}}var d="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(t,e){return e()}:function(t,e){var n=e(),r=a({inst:{value:n,getSnapshot:e}}),i=r[0].inst,d=r[1];return o((function(){i.value=n,i.getSnapshot=e,u(i)&&d({inst:i})}),[t,n,e]),s((function(){return u(i)&&d({inst:i}),t((function(){u(i)&&d({inst:i})}))}),[t]),c(n),n};e.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:d},56810:(t,e,n)=>{var r=n(99196),i=n(19720),a="function"==typeof Object.is?Object.is:function(t,e){return t===e&&(0!==t||1/t==1/e)||t!=t&&e!=e},s=i.useSyncExternalStore,o=r.useRef,c=r.useEffect,u=r.useMemo,d=r.useDebugValue;e.useSyncExternalStoreWithSelector=function(t,e,n,r,i){var l=o(null);if(null===l.current){var h={hasValue:!1,value:null};l.current=h}else h=l.current;l=u((function(){function t(t){if(!c){if(c=!0,s=t,t=r(t),void 0!==i&&h.hasValue){var e=h.value;if(i(e,t))return o=e}return o=t}if(e=o,a(s,t))return e;var n=r(t);return void 0!==i&&i(e,n)?e:(s=t,o=n)}var s,o,c=!1,u=void 0===n?null:n;return[function(){return t(e())},null===u?void 0:function(){return t(u())}]}),[e,n,r,i]);var f=s(t,l[0],l[1]);return c((function(){h.hasValue=!0,h.value=f}),[f]),d(f),f}},19720:(t,e,n)=>{t.exports=n(26876)},44966:(t,e,n)=>{t.exports=n(56810)},68831:(t,e,n)=>{n.d(e,{Xg:()=>c,f3:()=>u,mu:()=>o,vk:()=>d});var r=n(29728),i=n(83572),a=n(50336);function s(t){var e;return(e={id:t,send:function(){},subscribe:function(){return{unsubscribe:function(){}}},getSnapshot:function(){},toJSON:function(){return{id:t}}})[i.L$]=function(){return this},e}function o(t,e,n,r){var a,o=(0,i.j)(t.src),u=null===(a=null==e?void 0:e.options.services)||void 0===a?void 0:a[o.type],d=t.data?(0,i.QX)(t.data,n,r):void 0,l=u?c(u,t.id,d):s(t.id);return l.meta=t,l}function c(t,e,n){var r=s(e);if(r.deferred=!0,(0,i.O4)(t)){var o=r.state=(0,a.J)(void 0,(function(){return(n?t.withContext(n):t).initialState}));r.getSnapshot=function(){return o}}return r}function u(t){return function(t){try{return"function"==typeof t.send}catch(t){return!1}}(t)&&"id"in t}function d(t){var e;return(0,r.pi)(((e={subscribe:function(){return{unsubscribe:function(){}}},id:"anonymous",getSnapshot:function(){}})[i.L$]=function(){return this},e),t)}},11122:(t,e,n)=>{n.d(e,{C:()=>_});var r=n(29728),i=n(83572),a=n(59412),s=n(20192),o=n(55954),c=n(65717),u=n(88447),d=n(88976),l=n(68831);function h(t){return(0,r.pi)((0,r.pi)({type:s.invoke},t),{toJSON:function(){t.onDone,t.onError;var e,n=(0,r._T)(t,["onDone","onError"]);return(0,r.pi)((0,r.pi)({},n),{type:s.invoke,src:(e=t.src,"string"==typeof e?{type:e,toString:function(){return e}}:e)})}})}var f="",p="*",v={},y=function(t){return"#"===t[0]},m=function(){function t(e,n,a,s){void 0===a&&(a="context"in e?e.context:void 0);var l,p=this;this.config=e,this._context=a,this.order=-1,this.__xstatenode=!0,this.__cache={events:void 0,relativeValue:new Map,initialStateValue:void 0,initialState:void 0,on:void 0,transitions:void 0,candidates:{},delayedTransitions:void 0},this.idMap={},this.tags=[],this.options=Object.assign({actions:{},guards:{},services:{},activities:{},delays:{}},n),this.parent=null==s?void 0:s.parent,this.key=this.config.key||(null==s?void 0:s.key)||this.config.id||"(machine)",this.machine=this.parent?this.parent.machine:this,this.path=this.parent?this.parent.path.concat(this.key):[],this.delimiter=this.config.delimiter||(this.parent?this.parent.delimiter:u.iS),this.id=this.config.id||(0,r.ev)([this.machine.key],(0,r.CR)(this.path),!1).join(this.delimiter),this.version=this.parent?this.parent.version:this.config.version,this.type=this.config.type||(this.config.parallel?"parallel":this.config.states&&Object.keys(this.config.states).length?"compound":this.config.history?"history":"atomic"),this.schema=this.parent?this.machine.schema:null!==(l=this.config.schema)&&void 0!==l?l:{},this.description=this.config.description,c.M||(0,i.ZK)(!("parallel"in this.config),'The "parallel" property is deprecated and will be removed in version 4.1. '.concat(this.config.parallel?"Replace with `type: 'parallel'`":"Use `type: '".concat(this.type,"'`")," in the config for state node '").concat(this.id,"' instead.")),this.initial=this.config.initial,this.states=this.config.states?(0,i.Q8)(this.config.states,(function(e,n){var i,a=new t(e,{},void 0,{parent:p,key:n});return Object.assign(p.idMap,(0,r.pi)(((i={})[a.id]=a,i),a.idMap)),a})):v;var y=0;!function t(e){var n,i;e.order=y++;try{for(var a=(0,r.XA)((0,d.nI)(e)),s=a.next();!s.done;s=a.next())t(s.value)}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}}(this),this.history=!0===this.config.history?"shallow":this.config.history||!1,this._transient=!!this.config.always||!!this.config.on&&(Array.isArray(this.config.on)?this.config.on.some((function(t){return t.event===f})):f in this.config.on),this.strict=!!this.config.strict,this.onEntry=(0,i.qo)(this.config.entry||this.config.onEntry).map((function(t){return(0,o.toActionObject)(t)})),this.onExit=(0,i.qo)(this.config.exit||this.config.onExit).map((function(t){return(0,o.toActionObject)(t)})),this.meta=this.config.meta,this.doneData="final"===this.type?this.config.data:void 0,this.invoke=(0,i.qo)(this.config.invoke).map((function(t,e){var n,a;if((0,i.O4)(t)){var s=(0,i.bx)(p.id,e);return p.machine.options.services=(0,r.pi)(((n={})[s]=t,n),p.machine.options.services),h({src:s,id:s})}if((0,i.HD)(t.src))return s=t.id||(0,i.bx)(p.id,e),h((0,r.pi)((0,r.pi)({},t),{id:s,src:t.src}));if((0,i.O4)(t.src)||(0,i.mf)(t.src))return s=t.id||(0,i.bx)(p.id,e),p.machine.options.services=(0,r.pi)(((a={})[s]=t.src,a),p.machine.options.services),h((0,r.pi)((0,r.pi)({id:s},t),{src:s}));var o=t.src;return h((0,r.pi)((0,r.pi)({id:(0,i.bx)(p.id,e)},t),{src:o}))})),this.activities=(0,i.qo)(this.config.activities).concat(this.invoke).map((function(t){return(0,o.toActivityDefinition)(t)})),this.transition=this.transition.bind(this),this.tags=(0,i.qo)(this.config.tags)}return t.prototype._init=function(){this.__cache.transitions||(0,d.ac)(this).forEach((function(t){return t.on}))},t.prototype.withConfig=function(e,n){var i=this.options,a=i.actions,s=i.activities,o=i.guards,c=i.services,u=i.delays;return new t(this.config,{actions:(0,r.pi)((0,r.pi)({},a),e.actions),activities:(0,r.pi)((0,r.pi)({},s),e.activities),guards:(0,r.pi)((0,r.pi)({},o),e.guards),services:(0,r.pi)((0,r.pi)({},c),e.services),delays:(0,r.pi)((0,r.pi)({},u),e.delays)},null!=n?n:this.context)},t.prototype.withContext=function(e){return new t(this.config,this.options,e)},Object.defineProperty(t.prototype,"context",{get:function(){return(0,i.mf)(this._context)?this._context():this._context},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"definition",{get:function(){return{id:this.id,key:this.key,version:this.version,context:this.context,type:this.type,initial:this.initial,history:this.history,states:(0,i.Q8)(this.states,(function(t){return t.definition})),on:this.on,transitions:this.transitions,entry:this.onEntry,exit:this.onExit,activities:this.activities||[],meta:this.meta,order:this.order||-1,data:this.doneData,invoke:this.invoke,description:this.description,tags:this.tags}},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return this.definition},Object.defineProperty(t.prototype,"on",{get:function(){if(this.__cache.on)return this.__cache.on;var t=this.transitions;return this.__cache.on=t.reduce((function(t,e){return t[e.eventType]=t[e.eventType]||[],t[e.eventType].push(e),t}),{})},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"after",{get:function(){return this.__cache.delayedTransitions||(this.__cache.delayedTransitions=this.getDelayedTransitions(),this.__cache.delayedTransitions)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"transitions",{get:function(){return this.__cache.transitions||(this.__cache.transitions=this.formatTransitions(),this.__cache.transitions)},enumerable:!1,configurable:!0}),t.prototype.getCandidates=function(t){if(this.__cache.candidates[t])return this.__cache.candidates[t];var e=t===f,n=this.transitions.filter((function(n){var r=n.eventType===t;return e?r:r||n.eventType===p}));return this.__cache.candidates[t]=n,n},t.prototype.getDelayedTransitions=function(){var t=this,e=this.config.after;if(!e)return[];var n=function(e,n){var r=(0,i.mf)(e)?"".concat(t.id,":delay[").concat(n,"]"):e,a=(0,o.after)(r,t.id);return t.onEntry.push((0,o.send)(a,{delay:e})),t.onExit.push((0,o.cancel)(a)),a};return((0,i.kJ)(e)?e.map((function(t,e){var i=n(t.delay,e);return(0,r.pi)((0,r.pi)({},t),{event:i})})):(0,i.xH)(Object.keys(e).map((function(t,a){var s=e[t],o=(0,i.HD)(s)?{target:s}:s,c=isNaN(+t)?t:+t,u=n(c,a);return(0,i.qo)(o).map((function(t){return(0,r.pi)((0,r.pi)({},t),{event:u,delay:c})}))})))).map((function(e){var n=e.delay;return(0,r.pi)((0,r.pi)({},t.formatTransition(e)),{delay:n})}))},t.prototype.getStateNodes=function(t){var e,n=this;if(!t)return[];var s=t instanceof a.ZM?t.value:(0,i.WM)(t,this.delimiter);if((0,i.HD)(s)){var o=this.getStateNode(s).initial;return void 0!==o?this.getStateNodes(((e={})[s]=o,e)):[this,this.states[s]]}var c=Object.keys(s),u=[this];return u.push.apply(u,(0,r.ev)([],(0,r.CR)((0,i.xH)(c.map((function(t){return n.getStateNode(t).getStateNodes(s[t])})))),!1)),u},t.prototype.handles=function(t){var e=(0,i.x6)(t);return this.events.includes(e)},t.prototype.resolveState=function(t){var e=t instanceof a.ZM?t:a.ZM.create(t),n=Array.from((0,d.P_)([],this.getStateNodes(e.value)));return new a.ZM((0,r.pi)((0,r.pi)({},e),{value:this.resolve(e.value),configuration:n,done:(0,d.Ij)(n,this),tags:(0,d.Oe)(n),machine:this.machine}))},t.prototype.transitionLeafNode=function(t,e,n){var r=this.getStateNode(t).next(e,n);return r&&r.transitions.length?r:this.next(e,n)},t.prototype.transitionCompoundNode=function(t,e,n){var r=Object.keys(t),i=this.getStateNode(r[0])._transition(t[r[0]],e,n);return i&&i.transitions.length?i:this.next(e,n)},t.prototype.transitionParallelNode=function(t,e,n){var a,s,o={};try{for(var c=(0,r.XA)(Object.keys(t)),u=c.next();!u.done;u=c.next()){var d=u.value,l=t[d];if(l){var h=this.getStateNode(d)._transition(l,e,n);h&&(o[d]=h)}}}catch(t){a={error:t}}finally{try{u&&!u.done&&(s=c.return)&&s.call(c)}finally{if(a)throw a.error}}var f=Object.keys(o).map((function(t){return o[t]})),p=(0,i.xH)(f.map((function(t){return t.transitions})));if(!f.some((function(t){return t.transitions.length>0})))return this.next(e,n);var v=(0,i.xH)(Object.keys(o).map((function(t){return o[t].configuration})));return{transitions:p,exitSet:(0,i.xH)(f.map((function(t){return t.exitSet}))),configuration:v,source:e,actions:(0,i.xH)(Object.keys(o).map((function(t){return o[t].actions})))}},t.prototype._transition=function(t,e,n){return(0,i.HD)(t)?this.transitionLeafNode(t,e,n):1===Object.keys(t).length?this.transitionCompoundNode(t,e,n):this.transitionParallelNode(t,e,n)},t.prototype.getTransitionData=function(t,e){return this._transition(t.value,t,(0,i.g5)(e))},t.prototype.next=function(t,e){var n,a,s,o=this,c=e.name,u=[],d=[];try{for(var l=(0,r.XA)(this.getCandidates(c)),h=l.next();!h.done;h=l.next()){var f=h.value,p=f.cond,v=f.in,m=t.context,g=!v||((0,i.HD)(v)&&y(v)?t.matches((0,i.WM)(this.getStateNodeById(v).path,this.delimiter)):(0,i.W)((0,i.WM)(v,this.delimiter),(0,i.ET)(this.path.slice(0,-2))(t.value))),_=!1;try{_=!p||(0,i.vx)(this.machine,p,m,e,t)}catch(t){throw new Error("Unable to evaluate guard '".concat(p.name||p.type,"' in transition for event '").concat(c,"' in state node '").concat(this.id,"':\n").concat(t.message))}if(_&&g){void 0!==f.target&&(d=f.target),u.push.apply(u,(0,r.ev)([],(0,r.CR)(f.actions),!1)),s=f;break}}}catch(t){n={error:t}}finally{try{h&&!h.done&&(a=l.return)&&a.call(l)}finally{if(n)throw n.error}}if(s){if(!d.length)return{transitions:[s],exitSet:[],configuration:t.value?[this]:[],source:t,actions:u};var x=(0,i.xH)(d.map((function(e){return o.getRelativeStateNodes(e,t.historyValue)})));return{transitions:[s],exitSet:s.internal?[]:(0,i.xH)(d.map((function(t){return o.getPotentiallyReenteringNodes(t)}))),configuration:x,source:t,actions:u}}},t.prototype.getPotentiallyReenteringNodes=function(t){if(this.order0,x=_?t.configuration:e?e.configuration:[],b=(0,d.Ij)(x,this),w=_?(0,d.NA)(this.machine,g):void 0,k=e?e.historyValue?e.historyValue:t.source?this.machine.historyValue(e.value):void 0:void 0,S=this.getActions(new Set(x),b,t,n,u,e,c),O=e?(0,r.pi)({},e.activities):{};try{for(var E=(0,r.XA)(S),T=E.next();!T.done;T=E.next()){var Z=T.value;try{for(var j=(v=void 0,(0,r.XA)(Z.actions)),A=j.next();!A.done;A=j.next()){var N=A.value;N.type===s.start?O[N.activity.id||N.activity.type]=N:N.type===s.stop&&(O[N.activity.id||N.activity.type]=!1)}}catch(t){v={error:t}}finally{try{A&&!A.done&&(y=j.return)&&y.call(j)}finally{if(v)throw v.error}}}}catch(t){h={error:t}}finally{try{T&&!T.done&&(p=E.return)&&p.call(E)}finally{if(h)throw h.error}}var C=(0,r.CR)((0,o.resolveActions)(this,e,n,u,S,c,this.machine.config.predictableActionArguments||this.machine.config.preserveActionOrder),2),M=C[0],P=C[1],R=(0,r.CR)((0,i.uK)(M,i.vK),2),I=R[0],D=R[1],L=M.filter((function(t){var e;return t.type===s.start&&(null===(e=t.activity)||void 0===e?void 0:e.type)===s.invoke})),V=L.reduce((function(t,e){return t[e.activity.id]=(0,l.mu)(e.activity,m.machine,P,u),t}),e?(0,r.pi)({},e.children):{}),$=new a.ZM({value:w||e.value,context:P,_event:u,_sessionid:e?e._sessionid:null,historyValue:w?k?(0,i.yv)(k,w):void 0:e?e.historyValue:void 0,history:!w||t.source?e:void 0,actions:w?D:[],activities:w?O:e?e.activities:{},events:[],configuration:x,transitions:t.transitions,children:V,done:b,tags:(0,d.Oe)(x),machine:this}),z=n!==P;$.changed=u.name===s.update||z;var K=$.history;K&&delete K.history;var H=!b&&(this._transient||g.some((function(t){return t._transient})));if(!(_||H&&u.name!==f))return $;var X=$;if(!b)for(H&&(X=this.resolveRaisedTransition(X,{type:s.nullEvent},u,c));I.length;){var U=I.shift();X=this.resolveRaisedTransition(X,U._event,u,c)}var J=X.changed||(K?!!X.actions.length||z||typeof K.value!=typeof X.value||!(0,a.j_)(X.value,K.value):void 0);return X.changed=J,X.history=K,X},t.prototype.getStateNode=function(t){if(y(t))return this.machine.getStateNodeById(t);if(!this.states)throw new Error("Unable to retrieve child state '".concat(t,"' from '").concat(this.id,"'; no child states exist."));var e=this.states[t];if(!e)throw new Error("Child state '".concat(t,"' does not exist on '").concat(this.id,"'"));return e},t.prototype.getStateNodeById=function(t){var e=y(t)?t.slice("#".length):t;if(e===this.id)return this;var n=this.machine.idMap[e];if(!n)throw new Error("Child state node '#".concat(e,"' does not exist on machine '").concat(this.id,"'"));return n},t.prototype.getStateNodeByPath=function(t){if("string"==typeof t&&y(t))try{return this.getStateNodeById(t.slice(1))}catch(t){}for(var e=(0,i.Q9)(t,this.delimiter).slice(),n=this;e.length;){var r=e.shift();if(!r.length)break;n=n.getStateNode(r)}return n},t.prototype.resolve=function(t){var e,n=this;if(!t)return this.initialStateValue||v;switch(this.type){case"parallel":return(0,i.Q8)(this.initialStateValue,(function(e,r){return e?n.getStateNode(r).resolve(t[r]||e):v}));case"compound":if((0,i.HD)(t)){var r=this.getStateNode(t);return"parallel"===r.type||"compound"===r.type?((e={})[t]=r.initialStateValue,e):t}return Object.keys(t).length?(0,i.Q8)(t,(function(t,e){return t?n.getStateNode(e).resolve(t):v})):this.initialStateValue||{};default:return t||v}},t.prototype.getResolvedPath=function(t){if(y(t)){var e=this.machine.idMap[t.slice("#".length)];if(!e)throw new Error("Unable to find state node '".concat(t,"'"));return e.path}return(0,i.Q9)(t,this.delimiter)},Object.defineProperty(t.prototype,"initialStateValue",{get:function(){var t,e;if(this.__cache.initialStateValue)return this.__cache.initialStateValue;if("parallel"===this.type)e=(0,i.ib)(this.states,(function(t){return t.initialStateValue||v}),(function(t){return!("history"===t.type)}));else if(void 0!==this.initial){if(!this.states[this.initial])throw new Error("Initial state '".concat(this.initial,"' not found on '").concat(this.key,"'"));e=(0,d.N9)(this.states[this.initial])?this.initial:((t={})[this.initial]=this.states[this.initial].initialStateValue,t)}else e={};return this.__cache.initialStateValue=e,this.__cache.initialStateValue},enumerable:!1,configurable:!0}),t.prototype.getInitialState=function(t,e){this._init();var n=this.getStateNodes(t);return this.resolveTransition({configuration:n,exitSet:[],transitions:[],source:void 0,actions:[]},void 0,null!=e?e:this.machine.context,void 0)},Object.defineProperty(t.prototype,"initialState",{get:function(){var t=this.initialStateValue;if(!t)throw new Error("Cannot retrieve initial state from simple state '".concat(this.id,"'."));return this.getInitialState(t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"target",{get:function(){var t;if("history"===this.type){var e=this.config;t=(0,i.HD)(e.target)&&y(e.target)?(0,i.on)(this.machine.getStateNodeById(e.target).path.slice(this.path.length-1)):e.target}return t},enumerable:!1,configurable:!0}),t.prototype.getRelativeStateNodes=function(t,e,n){return void 0===n&&(n=!0),n?"history"===t.type?t.resolveHistory(e):t.initialStateNodes:[t]},Object.defineProperty(t.prototype,"initialStateNodes",{get:function(){var t=this;if((0,d.N9)(this))return[this];if("compound"===this.type&&!this.initial)return c.M||(0,i.ZK)(!1,"Compound state node '".concat(this.id,"' has no initial state.")),[this];var e=(0,i.SA)(this.initialStateValue);return(0,i.xH)(e.map((function(e){return t.getFromRelativePath(e)})))},enumerable:!1,configurable:!0}),t.prototype.getFromRelativePath=function(t){if(!t.length)return[this];var e=(0,r.CR)(t),n=e[0],i=e.slice(1);if(!this.states)throw new Error("Cannot retrieve subPath '".concat(n,"' from node with no states"));var a=this.getStateNode(n);if("history"===a.type)return a.resolveHistory();if(!this.states[n])throw new Error("Child state '".concat(n,"' does not exist on '").concat(this.id,"'"));return this.states[n].getFromRelativePath(i)},t.prototype.historyValue=function(t){if(Object.keys(this.states).length)return{current:t||this.initialStateValue,states:(0,i.ib)(this.states,(function(e,n){if(!t)return e.historyValue();var r=(0,i.HD)(t)?void 0:t[n];return e.historyValue(r||e.initialStateValue)}),(function(t){return!t.history}))}},t.prototype.resolveHistory=function(t){var e=this;if("history"!==this.type)return[this];var n=this.parent;if(!t){var r=this.target;return r?(0,i.xH)((0,i.SA)(r).map((function(t){return n.getFromRelativePath(t)}))):n.initialStateNodes}var a=(0,i.gk)(n.path,"states")(t).current;return(0,i.HD)(a)?[n.getStateNode(a)]:(0,i.xH)((0,i.SA)(a).map((function(t){return"deep"===e.history?n.getFromRelativePath(t):[n.states[t[0]]]})))},Object.defineProperty(t.prototype,"stateIds",{get:function(){var t=this,e=(0,i.xH)(Object.keys(this.states).map((function(e){return t.states[e].stateIds})));return[this.id].concat(e)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"events",{get:function(){var t,e,n,i;if(this.__cache.events)return this.__cache.events;var a=this.states,s=new Set(this.ownEvents);if(a)try{for(var o=(0,r.XA)(Object.keys(a)),c=o.next();!c.done;c=o.next()){var u=a[c.value];if(u.states)try{for(var d=(n=void 0,(0,r.XA)(u.events)),l=d.next();!l.done;l=d.next()){var h=l.value;s.add("".concat(h))}}catch(t){n={error:t}}finally{try{l&&!l.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}}}catch(e){t={error:e}}finally{try{c&&!c.done&&(e=o.return)&&e.call(o)}finally{if(t)throw t.error}}return this.__cache.events=Array.from(s)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"ownEvents",{get:function(){var t=new Set(this.transitions.filter((function(t){return!(!t.target&&!t.actions.length&&t.internal)})).map((function(t){return t.eventType})));return Array.from(t)},enumerable:!1,configurable:!0}),t.prototype.resolveTarget=function(t){var e=this;if(void 0!==t)return t.map((function(t){if(!(0,i.HD)(t))return t;var n=t[0]===e.delimiter;if(n&&!e.parent)return e.getStateNodeByPath(t.slice(1));var r=n?e.key+t:t;if(!e.parent)return e.getStateNodeByPath(r);try{return e.parent.getStateNodeByPath(r)}catch(t){throw new Error("Invalid transition definition for state node '".concat(e.id,"':\n").concat(t.message))}}))},t.prototype.formatTransition=function(t){var e=this,n=(0,i.rg)(t.target),a="internal"in t?t.internal:!n||n.some((function(t){return(0,i.HD)(t)&&t[0]===e.delimiter})),s=this.machine.options.guards,c=this.resolveTarget(n),u=(0,r.pi)((0,r.pi)({},t),{actions:(0,o.toActionObjects)((0,i.qo)(t.actions)),cond:(0,i.Qi)(t.cond,s),target:c,source:this,internal:a,eventType:t.event,toJSON:function(){return(0,r.pi)((0,r.pi)({},u),{target:u.target?u.target.map((function(t){return"#".concat(t.id)})):void 0,source:"#".concat(e.id)})}});return u},t.prototype.formatTransitions=function(){var t,e,n,a=this;if(this.config.on)if(Array.isArray(this.config.on))n=this.config.on;else{var s=this.config.on,u=s["*"],d=void 0===u?[]:u,l=(0,r._T)(s,["*"]);n=(0,i.xH)(Object.keys(l).map((function(t){c.M||t!==f||(0,i.ZK)(!1,"Empty string transition configs (e.g., `{ on: { '': ... }}`) for transient transitions are deprecated. Specify the transition in the `{ always: ... }` property instead. "+'Please check the `on` configuration for "#'.concat(a.id,'".'));var e=(0,i.jh)(t,l[t]);return c.M||function(t,e,n){var r=n.slice(0,-1).some((function(t){return!("cond"in t)&&!("in"in t)&&((0,i.HD)(t.target)||(0,i.O4)(t.target))})),a=e===f?"the transient event":"event '".concat(e,"'");(0,i.ZK)(!r,"One or more transitions for ".concat(a," on state '").concat(t.id,"' are unreachable. ")+"Make sure that the default transition is the last one defined.")}(a,t,e),e})).concat((0,i.jh)(p,d)))}else n=[];var h=this.config.always?(0,i.jh)("",this.config.always):[],v=this.config.onDone?(0,i.jh)(String((0,o.done)(this.id)),this.config.onDone):[];c.M||(0,i.ZK)(!(this.config.onDone&&!this.parent),'Root nodes cannot have an ".onDone" transition. Please check the config of "'.concat(this.id,'".'));var y=(0,i.xH)(this.invoke.map((function(t){var e=[];return t.onDone&&e.push.apply(e,(0,r.ev)([],(0,r.CR)((0,i.jh)(String((0,o.doneInvoke)(t.id)),t.onDone)),!1)),t.onError&&e.push.apply(e,(0,r.ev)([],(0,r.CR)((0,i.jh)(String((0,o.error)(t.id)),t.onError)),!1)),e}))),m=this.after,g=(0,i.xH)((0,r.ev)((0,r.ev)((0,r.ev)((0,r.ev)([],(0,r.CR)(v),!1),(0,r.CR)(y),!1),(0,r.CR)(n),!1),(0,r.CR)(h),!1).map((function(t){return(0,i.qo)(t).map((function(t){return a.formatTransition(t)}))})));try{for(var _=(0,r.XA)(m),x=_.next();!x.done;x=_.next()){var b=x.value;g.push(b)}}catch(e){t={error:e}}finally{try{x&&!x.done&&(e=_.return)&&e.call(_)}finally{if(t)throw t.error}}return g},t}(),g=!1;function _(t,e){return c.M||"predictableActionArguments"in t||g||(g=!0,console.warn("It is highly recommended to set `predictableActionArguments` to `true` when using `createMachine`. https://xstate.js.org/docs/guides/actions.html")),new m(t,e)}},59412:(t,e,n)=>{n.d(e,{TL:()=>d,ZM:()=>h,j1:()=>l,j_:()=>u});var r=n(29728),i=n(88447),a=n(83572),s=n(88976),o=n(55954),c=n(65717);function u(t,e){if(t===e)return!0;if(void 0===t||void 0===e)return!1;if((0,a.HD)(t)||(0,a.HD)(e))return t===e;var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every((function(n){return u(t[n],e[n])}))}function d(t){return"object"==typeof t&&null!==t&&"value"in t&&"_event"in t}function l(t,e){var n=t.exec;return(0,r.pi)((0,r.pi)({},t),{exec:void 0!==n?function(){return n(e.context,e.event,{action:t,state:e,_event:e._event})}:void 0})}var h=function(){function t(t){var e,n=this;this.actions=[],this.activities=i.qP,this.meta={},this.events=[],this.value=t.value,this.context=t.context,this._event=t._event,this._sessionid=t._sessionid,this.event=this._event.data,this.historyValue=t.historyValue,this.history=t.history,this.actions=t.actions||[],this.activities=t.activities||i.qP,this.meta=(0,s.xZ)(t.configuration),this.events=t.events||[],this.matches=this.matches.bind(this),this.toStrings=this.toStrings.bind(this),this.configuration=t.configuration,this.transitions=t.transitions,this.children=t.children,this.done=!!t.done,this.tags=null!==(e=Array.isArray(t.tags)?new Set(t.tags):t.tags)&&void 0!==e?e:new Set,this.machine=t.machine,Object.defineProperty(this,"nextEvents",{get:function(){return(0,s.nJ)(n.configuration)}})}return t.from=function(e,n){return e instanceof t?e.context!==n?new t({value:e.value,context:n,_event:e._event,_sessionid:null,historyValue:e.historyValue,history:e.history,actions:[],activities:e.activities,meta:{},events:[],configuration:[],transitions:[],children:{}}):e:new t({value:e,context:n,_event:o.initEvent,_sessionid:null,historyValue:void 0,history:void 0,actions:[],activities:void 0,meta:void 0,events:[],configuration:[],transitions:[],children:{}})},t.create=function(e){return new t(e)},t.inert=function(e,n){if(e instanceof t){if(!e.actions.length)return e;var r=o.initEvent;return new t({value:e.value,context:n,_event:r,_sessionid:null,historyValue:e.historyValue,history:e.history,activities:e.activities,configuration:e.configuration,transitions:[],children:{}})}return t.from(e,n)},t.prototype.toStrings=function(t,e){var n=this;if(void 0===t&&(t=this.value),void 0===e&&(e="."),(0,a.HD)(t))return[t];var i=Object.keys(t);return i.concat.apply(i,(0,r.ev)([],(0,r.CR)(i.map((function(r){return n.toStrings(t[r],e).map((function(t){return r+e+t}))}))),!1))},t.prototype.toJSON=function(){var t=this;t.configuration,t.transitions;var e=t.tags;t.machine;var n=(0,r._T)(t,["configuration","transitions","tags","machine"]);return(0,r.pi)((0,r.pi)({},n),{tags:Array.from(e)})},t.prototype.matches=function(t){return(0,a.W)(t,this.value)},t.prototype.hasTag=function(t){return this.tags.has(t)},t.prototype.can=function(t){var e;c.M&&(0,a.ZK)(!!this.machine,"state.can(...) used outside of a machine-created State object; this will always return false.");var n=null===(e=this.machine)||void 0===e?void 0:e.getTransitionData(this,t);return!!(null==n?void 0:n.transitions.length)&&n.transitions.some((function(t){return void 0!==t.target||t.actions.length}))},t}()},29728:(t,e,n)=>{n.d(e,{CR:()=>s,XA:()=>a,_T:()=>i,ev:()=>o,pi:()=>r});var r=function(){return r=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,a=n.call(t),s=[];try{for(;(void 0===e||e-- >0)&&!(r=a.next()).done;)s.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return s}function o(t,e,n){if(n||2===arguments.length)for(var r,i=0,a=e.length;i{n.r(e),n.d(e,{after:()=>l,assign:()=>d,cancel:()=>c,choose:()=>x,doneState:()=>h,error:()=>g,errorExecution:()=>y,errorPlatform:()=>m,init:()=>p,invoke:()=>v,log:()=>f,nullEvent:()=>u,pure:()=>b,raise:()=>s,send:()=>o,start:()=>i,stop:()=>a,update:()=>_});var r=n(86423),i=r.M.Start,a=r.M.Stop,s=r.M.Raise,o=r.M.Send,c=r.M.Cancel,u=r.M.NullEvent,d=r.M.Assign,l=r.M.After,h=r.M.DoneState,f=r.M.Log,p=r.M.Init,v=r.M.Invoke,y=r.M.ErrorExecution,m=r.M.ErrorPlatform,g=r.M.ErrorCustom,_=r.M.Update,x=r.M.Choose,b=r.M.Pure},55954:(t,e,n)=>{n.r(e),n.d(e,{actionTypes:()=>a,after:()=>A,assign:()=>Z,cancel:()=>S,choose:()=>D,done:()=>N,doneInvoke:()=>C,error:()=>M,escalate:()=>I,forwardTo:()=>R,getActionFunction:()=>u,initEvent:()=>c,isActionObject:()=>j,log:()=>w,pure:()=>P,raise:()=>f,resolveActions:()=>L,resolveLog:()=>k,resolveRaise:()=>p,resolveSend:()=>y,resolveStop:()=>T,respond:()=>x,send:()=>v,sendParent:()=>m,sendTo:()=>g,sendUpdate:()=>_,start:()=>O,stop:()=>E,toActionObject:()=>d,toActionObjects:()=>l,toActivityDefinition:()=>h});var r=n(29728),i=n(86423),a=n(20192),s=n(83572),o=n(65717),c=(0,s.g5)({type:a.init});function u(t,e){return e&&e[t]||void 0}function d(t,e){var n;if((0,s.HD)(t)||"number"==typeof t){var i=u(t,e);n=(0,s.mf)(i)?{type:t,exec:i}:i||{type:t,exec:void 0}}else if((0,s.mf)(t))n={type:t.name||t.toString(),exec:t};else if(i=u(t.type,e),(0,s.mf)(i))n=(0,r.pi)((0,r.pi)({},t),{exec:i});else if(i){var a=i.type||t.type;n=(0,r.pi)((0,r.pi)((0,r.pi)({},i),t),{type:a})}else n=t;return n}var l=function(t,e){return t?((0,s.kJ)(t)?t:[t]).map((function(t){return d(t,e)})):[]};function h(t){var e=d(t);return(0,r.pi)((0,r.pi)({id:(0,s.HD)(t)?t:e.id},e),{type:e.type})}function f(t,e){return{type:a.raise,event:"function"==typeof t?t:(0,s._v)(t),delay:e?e.delay:void 0,id:null==e?void 0:e.id}}function p(t,e,n,i){var o,c={_event:n},u=(0,s.g5)((0,s.mf)(t.event)?t.event(e,n.data,c):t.event);if((0,s.HD)(t.delay)){var d=i&&i[t.delay];o=(0,s.mf)(d)?d(e,n.data,c):d}else o=(0,s.mf)(t.delay)?t.delay(e,n.data,c):t.delay;return(0,r.pi)((0,r.pi)({},t),{type:a.raise,_event:u,delay:o})}function v(t,e){return{to:e?e.to:void 0,type:a.send,event:(0,s.mf)(t)?t:(0,s._v)(t),delay:e?e.delay:void 0,id:e&&void 0!==e.id?e.id:(0,s.mf)(t)?t.name:(0,s.x6)(t)}}function y(t,e,n,i){var a,o={_event:n},c=(0,s.g5)((0,s.mf)(t.event)?t.event(e,n.data,o):t.event);if((0,s.HD)(t.delay)){var u=i&&i[t.delay];a=(0,s.mf)(u)?u(e,n.data,o):u}else a=(0,s.mf)(t.delay)?t.delay(e,n.data,o):t.delay;var d=(0,s.mf)(t.to)?t.to(e,n.data,o):t.to;return(0,r.pi)((0,r.pi)({},t),{to:d,_event:c,event:c.data,delay:a})}function m(t,e){return v(t,(0,r.pi)((0,r.pi)({},e),{to:i.K.Parent}))}function g(t,e,n){return v(e,(0,r.pi)((0,r.pi)({},n),{to:t}))}function _(){return m(a.update)}function x(t,e){return v(t,(0,r.pi)((0,r.pi)({},e),{to:function(t,e,n){return n._event.origin}}))}var b=function(t,e){return{context:t,event:e}};function w(t,e){return void 0===t&&(t=b),{type:a.log,label:e,expr:t}}var k=function(t,e,n){return(0,r.pi)((0,r.pi)({},t),{value:(0,s.HD)(t.expr)?t.expr:t.expr(e,n.data,{_event:n})})},S=function(t){return{type:a.cancel,sendId:t}};function O(t){var e=h(t);return{type:i.M.Start,activity:e,exec:void 0}}function E(t){var e=(0,s.mf)(t)?t:h(t);return{type:i.M.Stop,activity:e,exec:void 0}}function T(t,e,n){var r=(0,s.mf)(t.activity)?t.activity(e,n.data):t.activity,a="string"==typeof r?{id:r}:r;return{type:i.M.Stop,activity:a}}var Z=function(t){return{type:a.assign,assignment:t}};function j(t){return"object"==typeof t&&"type"in t}function A(t,e){var n=e?"#".concat(e):"";return"".concat(i.M.After,"(").concat(t,")").concat(n)}function N(t,e){var n="".concat(i.M.DoneState,".").concat(t);return{type:n,data:e,toString:function(){return n}}}function C(t,e){var n="".concat(i.M.DoneInvoke,".").concat(t);return{type:n,data:e,toString:function(){return n}}}function M(t,e){var n="".concat(i.M.ErrorPlatform,".").concat(t);return{type:n,data:e,toString:function(){return n}}}function P(t){return{type:i.M.Pure,get:t}}function R(t,e){if(!(o.M||t&&"function"!=typeof t)){var n=t;t=function(){for(var t=[],e=0;e{n.d(e,{TV:()=>a,iS:()=>r,qP:()=>i,rt:()=>s});var r=".",i={},a="xstate.guard",s=""},65717:(t,e,n)=>{n.d(e,{M:()=>r});var r=!0},5031:(t,e,n)=>{n.d(e,{f0:()=>i,lj:()=>a});var r=n(55954),i=r.assign,a=(r.send,r.sendTo,r.sendParent);r.sendUpdate,r.forwardTo,r.doneInvoke,r.raise},47090:(t,e,n)=>{n.d(e,{TM:()=>g,kJ:()=>w,Cs:()=>b});var r=n(29728),i=n(86423),a=n(59412),s=n(20192),o=n(55954),c=n(65717),u=n(83572),d={deferEvents:!1},l=function(){function t(t){this.processingEvent=!1,this.queue=[],this.initialized=!1,this.options=(0,r.pi)((0,r.pi)({},d),t)}return t.prototype.initialize=function(t){if(this.initialized=!0,t){if(!this.options.deferEvents)return void this.schedule(t);this.process(t)}this.flushEvents()},t.prototype.schedule=function(t){if(this.initialized&&!this.processingEvent){if(0!==this.queue.length)throw new Error("Event queue should be empty when it is not processing events");this.process(t),this.flushEvents()}else this.queue.push(t)},t.prototype.clear=function(){this.queue=[]},t.prototype.flushEvents=function(){for(var t=this.queue.shift();t;)this.process(t),t=this.queue.shift()},t.prototype.process=function(t){this.processingEvent=!0;try{t()}catch(t){throw this.clear(),t}finally{this.processingEvent=!1}},t}(),h=n(68831),f=new Map,p=0,v=function(t){f.delete(t)};function y(){return"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:void(c.M||console.warn("XState could not find a global object in this environment. Please let the maintainers know and raise an issue here: https://github.com/statelyai/xstate/issues"))}var m=n(50336);var g,_={sync:!1,autoForward:!1};!function(t){t[t.NotStarted=0]="NotStarted",t[t.Running=1]="Running",t[t.Stopped=2]="Stopped"}(g||(g={}));var x=function(){function t(e,n){void 0===n&&(n=t.defaultOptions);var a=this;this.machine=e,this.delayedEventsMap={},this.listeners=new Set,this.contextListeners=new Set,this.stopListeners=new Set,this.doneListeners=new Set,this.eventListeners=new Set,this.sendListeners=new Set,this.initialized=!1,this.status=g.NotStarted,this.children=new Map,this.forwardTo=new Set,this._outgoingQueue=[],this.init=this.start,this.send=function(t,e){if((0,u.kJ)(t))return a.batch(t),a.state;var n=(0,u.g5)((0,u._v)(t,e));if(a.status===g.Stopped)return c.M||(0,u.ZK)(!1,'Event "'.concat(n.name,'" was sent to stopped service "').concat(a.machine.id,'". This service has already reached its final state, and will not transition.\nEvent: ').concat(JSON.stringify(n.data))),a.state;if(a.status!==g.Running&&!a.options.deferEvents)throw new Error('Event "'.concat(n.name,'" was sent to uninitialized service "').concat(a.machine.id,'". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.\nEvent: ').concat(JSON.stringify(n.data)));return a.scheduler.schedule((function(){a.forward(n);var t=a._nextState(n);a.update(t,n)})),a._state},this.sendTo=function(t,e,n){var d=a.parent&&(e===i.K.Parent||a.parent.id===e),l=d?a.parent:(0,u.HD)(e)?e===i.K.Internal?a:a.children.get(e)||function(t){return f.get(t)}(e):(0,u.Bc)(e)?e:void 0;if(l)if("machine"in l){if(a.status!==g.Stopped||a.parent!==l||a.state.done){var h=(0,r.pi)((0,r.pi)({},t),{name:t.name===s.error?"".concat((0,o.error)(a.id)):t.name,origin:a.sessionId});!n&&a.machine.config.predictableActionArguments?a._outgoingQueue.push([l,h]):l.send(h)}}else!n&&a.machine.config.predictableActionArguments?a._outgoingQueue.push([l,t.data]):l.send(t.data);else{if(!d)throw new Error("Unable to send event to child '".concat(e,"' from service '").concat(a.id,"'."));c.M||(0,u.ZK)(!1,"Service '".concat(a.id,"' has no parent: unable to send event ").concat(t.type))}},this._exec=function(t,e,n,r){void 0===r&&(r=a.machine.options.actions);var d=t.exec||(0,o.getActionFunction)(t.type,r),l=(0,u.mf)(d)?d:d?d.exec:t.exec;if(l)try{return l(e,n.data,a.machine.config.predictableActionArguments?{action:t,_event:n}:{action:t,state:a.state,_event:n})}catch(t){throw a.parent&&a.parent.send({type:"xstate.error",data:t}),t}switch(t.type){case s.raise:var h=t;a.defer(h);break;case s.send:var f=t;if("number"==typeof f.delay)return void a.defer(f);f.to?a.sendTo(f._event,f.to,n===o.initEvent):a.send(f._event);break;case s.cancel:a.cancel(t.sendId);break;case s.start:if(a.status!==g.Running)return;var p=t.activity;if(!a.machine.config.predictableActionArguments&&!a.state.activities[p.id||p.type])break;if(p.type===i.M.Invoke){var v=(0,u.j)(p.src),y=a.machine.options.services?a.machine.options.services[v.type]:void 0,m=p.id,_=p.data;c.M||(0,u.ZK)(!("forward"in p),"`forward` property is deprecated (found in invocation of '".concat(p.src,"' in in machine '").concat(a.machine.id,"'). ")+"Please use `autoForward` instead.");var x="autoForward"in p?p.autoForward:!!p.forward;if(!y)return void(c.M||(0,u.ZK)(!1,"No service found for invocation '".concat(p.src,"' in machine '").concat(a.machine.id,"'.")));var b=_?(0,u.QX)(_,e,n):void 0;if("string"==typeof y)return;var w=(0,u.mf)(y)?y(e,n.data,{data:b,src:v,meta:p.meta}):y;if(!w)return;var k=void 0;(0,u.O4)(w)&&(w=b?w.withContext(b):w,k={autoForward:x}),a.spawn(w,m,k)}else a.spawnActivity(p);break;case s.stop:a.stopChild(t.activity.id);break;case s.log:var S=t,O=S.label,E=S.value;O?a.logger(O,E):a.logger(E);break;default:c.M||(0,u.ZK)(!1,"No implementation found for action type '".concat(t.type,"'"))}};var d=(0,r.pi)((0,r.pi)({},t.defaultOptions),n),h=d.clock,v=d.logger,y=d.parent,m=d.id,_=void 0!==m?m:e.id;this.id=_,this.logger=v,this.clock=h,this.parent=y,this.options=d,this.scheduler=new l({deferEvents:this.options.deferEvents}),this.sessionId="x:".concat(p++)}return Object.defineProperty(t.prototype,"initialState",{get:function(){var t=this;return this._initialState?this._initialState:(0,m.J)(this,(function(){return t._initialState=t.machine.initialState,t._initialState}))},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"state",{get:function(){return c.M||(0,u.ZK)(this.status!==g.NotStarted,"Attempted to read state from uninitialized service '".concat(this.id,"'. Make sure the service is started first.")),this._state},enumerable:!1,configurable:!0}),t.prototype.execute=function(t,e){var n,i;try{for(var a=(0,r.XA)(t.actions),s=a.next();!s.done;s=a.next()){var o=s.value;this.exec(o,t,e)}}catch(t){n={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},t.prototype.update=function(t,e){var n,i,a,s,c,d,l,h,f=this;if(t._sessionid=this.sessionId,this._state=t,this.machine.config.predictableActionArguments&&e!==o.initEvent||!this.options.execute)for(var p=void 0;p=this._outgoingQueue.shift();)p[0].send(p[1]);else this.execute(this.state);if(this.children.forEach((function(t){f.state.children[t.id]=t})),this.devTools&&this.devTools.send(e.data,t),t.event)try{for(var y=(0,r.XA)(this.eventListeners),m=y.next();!m.done;m=y.next())(0,m.value)(t.event)}catch(t){n={error:t}}finally{try{m&&!m.done&&(i=y.return)&&i.call(y)}finally{if(n)throw n.error}}try{for(var g=(0,r.XA)(this.listeners),_=g.next();!_.done;_=g.next())(0,_.value)(t,t.event)}catch(t){a={error:t}}finally{try{_&&!_.done&&(s=g.return)&&s.call(g)}finally{if(a)throw a.error}}try{for(var x=(0,r.XA)(this.contextListeners),b=x.next();!b.done;b=x.next())(0,b.value)(this.state.context,this.state.history?this.state.history.context:void 0)}catch(t){c={error:t}}finally{try{b&&!b.done&&(d=x.return)&&d.call(x)}finally{if(c)throw c.error}}if(this.state.done){var w=t.configuration.find((function(t){return"final"===t.type&&t.parent===f.machine})),k=w&&w.doneData?(0,u.QX)(w.doneData,t.context,e):void 0;this._doneEvent=(0,o.doneInvoke)(this.id,k);try{for(var S=(0,r.XA)(this.doneListeners),O=S.next();!O.done;O=S.next())(0,O.value)(this._doneEvent)}catch(t){l={error:t}}finally{try{O&&!O.done&&(h=S.return)&&h.call(S)}finally{if(l)throw l.error}}this._stop(),this._stopChildren(),v(this.sessionId)}},t.prototype.onTransition=function(t){return this.listeners.add(t),this.status===g.Running&&t(this.state,this.state.event),this},t.prototype.subscribe=function(t,e,n){var r=this,i=(0,u.zM)(t,e,n);this.listeners.add(i.next),this.status!==g.NotStarted&&i.next(this.state);var a=function(){r.doneListeners.delete(a),r.stopListeners.delete(a),i.complete()};return this.status===g.Stopped?i.complete():(this.onDone(a),this.onStop(a)),{unsubscribe:function(){r.listeners.delete(i.next),r.doneListeners.delete(a),r.stopListeners.delete(a)}}},t.prototype.onEvent=function(t){return this.eventListeners.add(t),this},t.prototype.onSend=function(t){return this.sendListeners.add(t),this},t.prototype.onChange=function(t){return this.contextListeners.add(t),this},t.prototype.onStop=function(t){return this.stopListeners.add(t),this},t.prototype.onDone=function(t){return this.status===g.Stopped&&this._doneEvent?t(this._doneEvent):this.doneListeners.add(t),this},t.prototype.off=function(t){return this.listeners.delete(t),this.eventListeners.delete(t),this.sendListeners.delete(t),this.stopListeners.delete(t),this.doneListeners.delete(t),this.contextListeners.delete(t),this},t.prototype.start=function(t){var e,n,r=this;if(this.status===g.Running)return this;this.machine._init(),e=this.sessionId,n=this,f.set(e,n),this.initialized=!0,this.status=g.Running;var i=void 0===t?this.initialState:(0,m.J)(this,(function(){return(0,a.TL)(t)?r.machine.resolveState(t):r.machine.resolveState(a.ZM.from(t,r.machine.context))}));return this.options.devTools&&this.attachDev(),this.scheduler.initialize((function(){r.update(i,o.initEvent)})),this},t.prototype._stopChildren=function(){this.children.forEach((function(t){(0,u.mf)(t.stop)&&t.stop()})),this.children.clear()},t.prototype._stop=function(){var t,e,n,i,a,s,o,c,u,d;try{for(var h=(0,r.XA)(this.listeners),f=h.next();!f.done;f=h.next()){var p=f.value;this.listeners.delete(p)}}catch(e){t={error:e}}finally{try{f&&!f.done&&(e=h.return)&&e.call(h)}finally{if(t)throw t.error}}try{for(var v=(0,r.XA)(this.stopListeners),y=v.next();!y.done;y=v.next())(p=y.value)(),this.stopListeners.delete(p)}catch(t){n={error:t}}finally{try{y&&!y.done&&(i=v.return)&&i.call(v)}finally{if(n)throw n.error}}try{for(var m=(0,r.XA)(this.contextListeners),_=m.next();!_.done;_=m.next())p=_.value,this.contextListeners.delete(p)}catch(t){a={error:t}}finally{try{_&&!_.done&&(s=m.return)&&s.call(m)}finally{if(a)throw a.error}}try{for(var x=(0,r.XA)(this.doneListeners),b=x.next();!b.done;b=x.next())p=b.value,this.doneListeners.delete(p)}catch(t){o={error:t}}finally{try{b&&!b.done&&(c=x.return)&&c.call(x)}finally{if(o)throw o.error}}if(!this.initialized)return this;this.initialized=!1,this.status=g.Stopped,this._initialState=void 0;try{for(var w=(0,r.XA)(Object.keys(this.delayedEventsMap)),k=w.next();!k.done;k=w.next()){var S=k.value;this.clock.clearTimeout(this.delayedEventsMap[S])}}catch(t){u={error:t}}finally{try{k&&!k.done&&(d=w.return)&&d.call(w)}finally{if(u)throw u.error}}this.scheduler.clear(),this.scheduler=new l({deferEvents:this.options.deferEvents})},t.prototype.stop=function(){var t=this,e=this.scheduler;return this._stop(),e.schedule((function(){var e=(0,u.g5)({type:"xstate.stop"}),n=(0,m.J)(t,(function(){var n=(0,u.xH)((0,r.ev)([],(0,r.CR)(t.state.configuration),!1).sort((function(t,e){return e.order-t.order})).map((function(e){return(0,o.toActionObjects)(e.onExit,t.machine.options.actions)}))),i=(0,r.CR)((0,o.resolveActions)(t.machine,t.state,t.state.context,e,[{type:"exit",actions:n}],t.machine.config.predictableActionArguments?t._exec:void 0,t.machine.config.predictableActionArguments||t.machine.config.preserveActionOrder),2),s=i[0],c=i[1],d=new a.ZM({value:t.state.value,context:c,_event:e,_sessionid:t.sessionId,historyValue:void 0,history:t.state,actions:s.filter((function(t){return!(0,u.vK)(t)})),activities:{},events:[],configuration:[],transitions:[],children:{},done:t.state.done,tags:t.state.tags,machine:t.machine});return d.changed=!0,d}));t.update(n,e),t._stopChildren(),v(t.sessionId)})),this},t.prototype.batch=function(t){var e=this;if(this.status===g.NotStarted&&this.options.deferEvents)c.M||(0,u.ZK)(!1,"".concat(t.length,' event(s) were sent to uninitialized service "').concat(this.machine.id,'" and are deferred. Make sure .start() is called for this service.\nEvent: ').concat(JSON.stringify(event)));else if(this.status!==g.Running)throw new Error("".concat(t.length,' event(s) were sent to uninitialized service "').concat(this.machine.id,'". Make sure .start() is called for this service, or set { deferEvents: true } in the service options.'));if(t.length){var n=!!this.machine.config.predictableActionArguments&&this._exec;this.scheduler.schedule((function(){var i,s,o=e.state,c=!1,d=[],l=function(t){var i=(0,u.g5)(t);e.forward(i),o=(0,m.J)(e,(function(){return e.machine.transition(o,i,void 0,n||void 0)})),d.push.apply(d,(0,r.ev)([],(0,r.CR)(e.machine.config.predictableActionArguments?o.actions:o.actions.map((function(t){return(0,a.j1)(t,o)}))),!1)),c=c||!!o.changed};try{for(var h=(0,r.XA)(t),f=h.next();!f.done;f=h.next())l(f.value)}catch(t){i={error:t}}finally{try{f&&!f.done&&(s=h.return)&&s.call(h)}finally{if(i)throw i.error}}o.changed=c,o.actions=d,e.update(o,(0,u.g5)(t[t.length-1]))}))}},t.prototype.sender=function(t){return this.send.bind(this,t)},t.prototype._nextState=function(t,e){var n=this;void 0===e&&(e=!!this.machine.config.predictableActionArguments&&this._exec);var r=(0,u.g5)(t);if(0===r.name.indexOf(s.errorPlatform)&&!this.state.nextEvents.some((function(t){return 0===t.indexOf(s.errorPlatform)})))throw r.data.data;return(0,m.J)(this,(function(){return n.machine.transition(n.state,r,void 0,e||void 0)}))},t.prototype.nextState=function(t){return this._nextState(t,!1)},t.prototype.forward=function(t){var e,n;try{for(var i=(0,r.XA)(this.forwardTo),a=i.next();!a.done;a=i.next()){var s=a.value,o=this.children.get(s);if(!o)throw new Error("Unable to forward event '".concat(t,"' from interpreter '").concat(this.id,"' to nonexistant child '").concat(s,"'."));o.send(t)}}catch(t){e={error:t}}finally{try{a&&!a.done&&(n=i.return)&&n.call(i)}finally{if(e)throw e.error}}},t.prototype.defer=function(t){var e=this,n=this.clock.setTimeout((function(){"to"in t&&t.to?e.sendTo(t._event,t.to,!0):e.send(t._event)}),t.delay);t.id&&(this.delayedEventsMap[t.id]=n)},t.prototype.cancel=function(t){this.clock.clearTimeout(this.delayedEventsMap[t]),delete this.delayedEventsMap[t]},t.prototype.exec=function(t,e,n){void 0===n&&(n=this.machine.options.actions),this._exec(t,e.context,e._event,n)},t.prototype.removeChild=function(t){var e;this.children.delete(t),this.forwardTo.delete(t),null===(e=this.state)||void 0===e||delete e.children[t]},t.prototype.stopChild=function(t){var e=this.children.get(t);e&&(this.removeChild(t),(0,u.mf)(e.stop)&&e.stop())},t.prototype.spawn=function(t,e,n){if(this.status!==g.Running)return(0,h.Xg)(t,e);if((0,u.y8)(t))return this.spawnPromise(Promise.resolve(t),e);if((0,u.mf)(t))return this.spawnCallback(t,e);if((0,h.f3)(t))return this.spawnActor(t,e);if((0,u.bi)(t))return this.spawnObservable(t,e);if((0,u.O4)(t))return this.spawnMachine(t,(0,r.pi)((0,r.pi)({},n),{id:e}));if((0,u.HV)(t))return this.spawnBehavior(t,e);throw new Error('Unable to spawn entity "'.concat(e,'" of type "').concat(typeof t,'".'))},t.prototype.spawnMachine=function(e,n){var i=this;void 0===n&&(n={});var a=new t(e,(0,r.pi)((0,r.pi)({},this.options),{parent:this,id:n.id||e.id})),o=(0,r.pi)((0,r.pi)({},_),n);o.sync&&a.onTransition((function(t){i.send(s.update,{state:t,id:a.id})}));var c=a;return this.children.set(a.id,c),o.autoForward&&this.forwardTo.add(a.id),a.onDone((function(t){i.removeChild(a.id),i.send((0,u.g5)(t,{origin:a.id}))})).start(),c},t.prototype.spawnBehavior=function(t,e){var n=function(t,e){void 0===e&&(e={});var n=t.initialState,r=new Set,i=[],a=!1,s=(0,h.vk)({id:e.id,send:function(e){i.push(e),function(){if(!a){for(a=!0;i.length>0;){var e=i.shift();n=t.transition(n,e,o),r.forEach((function(t){return t.next(n)}))}a=!1}}()},getSnapshot:function(){return n},subscribe:function(t,e,i){var a=(0,u.zM)(t,e,i);return r.add(a),a.next(n),{unsubscribe:function(){r.delete(a)}}}}),o={parent:e.parent,self:s,id:e.id||"anonymous",observers:r};return n=t.start?t.start(o):n,s}(t,{id:e,parent:this});return this.children.set(e,n),n},t.prototype.spawnPromise=function(t,e){var n,r,i=this,a=!1;t.then((function(t){a||(r=t,i.removeChild(e),i.send((0,u.g5)((0,o.doneInvoke)(e,t),{origin:e})))}),(function(t){if(!a){i.removeChild(e);var n=(0,o.error)(e,t);try{i.send((0,u.g5)(n,{origin:e}))}catch(r){(0,u.v4)(t,r,e),i.devTools&&i.devTools.send(n,i.state),i.machine.strict&&i.stop()}}}));var s=((n={id:e,send:function(){},subscribe:function(e,n,r){var i=(0,u.zM)(e,n,r),a=!1;return t.then((function(t){a||(i.next(t),a||i.complete())}),(function(t){a||i.error(t)})),{unsubscribe:function(){return a=!0}}},stop:function(){a=!0},toJSON:function(){return{id:e}},getSnapshot:function(){return r}})[u.L$]=function(){return this},n);return this.children.set(e,s),s},t.prototype.spawnCallback=function(t,e){var n,r,i,a=this,s=!1,c=new Set,d=new Set;try{i=t((function(t){r=t,d.forEach((function(e){return e(t)})),s||a.send((0,u.g5)(t,{origin:e}))}),(function(t){c.add(t)}))}catch(t){this.send((0,o.error)(e,t))}if((0,u.y8)(i))return this.spawnPromise(i,e);var l=((n={id:e,send:function(t){return c.forEach((function(e){return e(t)}))},subscribe:function(t){var e=(0,u.zM)(t);return d.add(e.next),{unsubscribe:function(){d.delete(e.next)}}},stop:function(){s=!0,(0,u.mf)(i)&&i()},toJSON:function(){return{id:e}},getSnapshot:function(){return r}})[u.L$]=function(){return this},n);return this.children.set(e,l),l},t.prototype.spawnObservable=function(t,e){var n,r,i=this,a=t.subscribe((function(t){r=t,i.send((0,u.g5)(t,{origin:e}))}),(function(t){i.removeChild(e),i.send((0,u.g5)((0,o.error)(e,t),{origin:e}))}),(function(){i.removeChild(e),i.send((0,u.g5)((0,o.doneInvoke)(e),{origin:e}))})),s=((n={id:e,send:function(){},subscribe:function(e,n,r){return t.subscribe(e,n,r)},stop:function(){return a.unsubscribe()},getSnapshot:function(){return r},toJSON:function(){return{id:e}}})[u.L$]=function(){return this},n);return this.children.set(e,s),s},t.prototype.spawnActor=function(t,e){return this.children.set(e,t),t},t.prototype.spawnActivity=function(t){var e=this.machine.options&&this.machine.options.activities?this.machine.options.activities[t.type]:void 0;if(e){var n=e(this.state.context,t);this.spawnEffect(t.id,n)}else c.M||(0,u.ZK)(!1,"No implementation found for activity '".concat(t.type,"'"))},t.prototype.spawnEffect=function(t,e){var n;this.children.set(t,((n={id:t,send:function(){},subscribe:function(){return{unsubscribe:function(){}}},stop:e||void 0,getSnapshot:function(){},toJSON:function(){return{id:t}}})[u.L$]=function(){return this},n))},t.prototype.attachDev=function(){var t=y();if(this.options.devTools&&t){if(t.__REDUX_DEVTOOLS_EXTENSION__){var e="object"==typeof this.options.devTools?this.options.devTools:void 0;this.devTools=t.__REDUX_DEVTOOLS_EXTENSION__.connect((0,r.pi)((0,r.pi)({name:this.id,autoPause:!0,stateSanitizer:function(t){return{value:t.value,context:t.context,actions:t.actions}}},e),{features:(0,r.pi)({jump:!1,skip:!1},e?e.features:void 0)}),this.machine),this.devTools.init(this.state)}!function(t){if(y()){var e=function(){var t=y();if(t&&"__xstate__"in t)return t.__xstate__}();e&&e.register(t)}}(this)}},t.prototype.toJSON=function(){return{id:this.id}},t.prototype[u.L$]=function(){return this},t.prototype.getSnapshot=function(){return this.status===g.NotStarted?this.initialState:this._state},t.defaultOptions={execute:!0,deferEvents:!0,clock:{setTimeout:function(t,e){return setTimeout(t,e)},clearTimeout:function(t){return clearTimeout(t)}},logger:console.log.bind(console),devTools:!1},t.interpret=w,t}();function b(t,e){var n=function(t){return(0,u.HD)(t)?(0,r.pi)((0,r.pi)({},_),{name:t}):(0,r.pi)((0,r.pi)((0,r.pi)({},_),{name:(0,u.EL)()}),t)}(e);return(0,m.F)((function(e){if(!c.M){var r=(0,u.O4)(t)||(0,u.mf)(t);(0,u.ZK)(!!e||r,'Attempted to spawn an Actor (ID: "'.concat((0,u.O4)(t)?t.id:"undefined",'") outside of a service. This will have no effect.'))}return e?e.spawn(t,n.name,n):(0,h.Xg)(t,n.name)}))}function w(t,e){return new x(t,e)}},50336:(t,e,n)=>{n.d(e,{F:()=>a,J:()=>i});var r=[],i=function(t,e){r.push(t);var n=e(t);return r.pop(),n},a=function(t){return t(r[r.length-1])}},88976:(t,e,n)=>{n.d(e,{G:()=>o,Ij:()=>v,N9:()=>a,NA:()=>h,Oe:()=>m,P_:()=>u,ac:()=>c,e$:()=>f,nI:()=>s,nJ:()=>p,xZ:()=>y});var r=n(29728),i=n(83572),a=function(t){return"atomic"===t.type||"final"===t.type};function s(t){return Object.keys(t.states).map((function(e){return t.states[e]}))}function o(t){return s(t).filter((function(t){return"history"!==t.type}))}function c(t){var e=[t];return a(t)?e:e.concat((0,i.xH)(o(t).map(c)))}function u(t,e){var n,i,a,s,c,u,d,h,f=l(new Set(t)),p=new Set(e);try{for(var v=(0,r.XA)(p),y=v.next();!y.done;y=v.next())for(var m=(E=y.value).parent;m&&!p.has(m);)p.add(m),m=m.parent}catch(t){n={error:t}}finally{try{y&&!y.done&&(i=v.return)&&i.call(v)}finally{if(n)throw n.error}}var g=l(p);try{for(var _=(0,r.XA)(p),x=_.next();!x.done;x=_.next())if("compound"!==(E=x.value).type||g.get(E)&&g.get(E).length){if("parallel"===E.type)try{for(var b=(c=void 0,(0,r.XA)(o(E))),w=b.next();!w.done;w=b.next()){var k=w.value;p.has(k)||(p.add(k),f.get(k)?f.get(k).forEach((function(t){return p.add(t)})):k.initialStateNodes.forEach((function(t){return p.add(t)})))}}catch(t){c={error:t}}finally{try{w&&!w.done&&(u=b.return)&&u.call(b)}finally{if(c)throw c.error}}}else f.get(E)?f.get(E).forEach((function(t){return p.add(t)})):E.initialStateNodes.forEach((function(t){return p.add(t)}))}catch(t){a={error:t}}finally{try{x&&!x.done&&(s=_.return)&&s.call(_)}finally{if(a)throw a.error}}try{for(var S=(0,r.XA)(p),O=S.next();!O.done;O=S.next()){var E;for(m=(E=O.value).parent;m&&!p.has(m);)p.add(m),m=m.parent}}catch(t){d={error:t}}finally{try{O&&!O.done&&(h=S.return)&&h.call(S)}finally{if(d)throw d.error}}return p}function d(t,e){var n=e.get(t);if(!n)return{};if("compound"===t.type){var r=n[0];if(!r)return{};if(a(r))return r.key}var i={};return n.forEach((function(t){i[t.key]=d(t,e)})),i}function l(t){var e,n,i=new Map;try{for(var a=(0,r.XA)(t),s=a.next();!s.done;s=a.next()){var o=s.value;i.has(o)||i.set(o,[]),o.parent&&(i.has(o.parent)||i.set(o.parent,[]),i.get(o.parent).push(o))}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}return i}function h(t,e){return d(t,l(u([t],e)))}function f(t,e){return Array.isArray(t)?t.some((function(t){return t===e})):t instanceof Set&&t.has(e)}function p(t){return(0,r.ev)([],(0,r.CR)(new Set((0,i.xH)((0,r.ev)([],(0,r.CR)(t.map((function(t){return t.ownEvents}))),!1)))),!1)}function v(t,e){return"compound"===e.type?o(e).some((function(e){return"final"===e.type&&f(t,e)})):"parallel"===e.type&&o(e).every((function(e){return v(t,e)}))}function y(t){return void 0===t&&(t=[]),t.reduce((function(t,e){return void 0!==e.meta&&(t[e.id]=e.meta),t}),{})}function m(t){return new Set((0,i.xH)(t.map((function(t){return t.tags}))))}},86423:(t,e,n)=>{var r,i;n.d(e,{K:()=>i,M:()=>r}),function(t){t.Start="xstate.start",t.Stop="xstate.stop",t.Raise="xstate.raise",t.Send="xstate.send",t.Cancel="xstate.cancel",t.NullEvent="",t.Assign="xstate.assign",t.After="xstate.after",t.DoneState="done.state",t.DoneInvoke="done.invoke",t.Log="xstate.log",t.Init="xstate.init",t.Invoke="xstate.invoke",t.ErrorExecution="error.execution",t.ErrorCommunication="error.communication",t.ErrorPlatform="error.platform",t.ErrorCustom="xstate.error",t.Update="xstate.update",t.Pure="xstate.pure",t.Choose="xstate.choose"}(r||(r={})),function(t){t.Parent="#_parent",t.Internal="#_internal"}(i||(i={}))},83572:(t,e,n)=>{n.d(e,{Bc:()=>L,EL:()=>V,ET:()=>y,HD:()=>M,HV:()=>O,JQ:()=>k,L$:()=>I,O4:()=>D,Q8:()=>p,Q9:()=>l,QX:()=>w,Qi:()=>P,SA:()=>g,W:()=>u,WM:()=>h,ZK:()=>A,_v:()=>$,bi:()=>R,bx:()=>B,dt:()=>j,g5:()=>z,gk:()=>m,ib:()=>v,j:()=>J,jh:()=>K,kJ:()=>N,mf:()=>C,on:()=>f,qo:()=>b,rg:()=>H,uK:()=>E,v4:()=>X,vK:()=>F,vx:()=>U,x6:()=>d,xH:()=>_,y8:()=>S,yv:()=>Z,zM:()=>q});var r,i=n(29728),a=n(86423),s=n(20192),o=n(88447),c=n(65717);function u(t,e,n){void 0===n&&(n=o.iS);var r=h(t,n),i=h(e,n);return M(i)?!!M(r)&&i===r:M(r)?r in i:Object.keys(r).every((function(t){return t in i&&u(r[t],i[t])}))}function d(t){try{return M(t)||"number"==typeof t?"".concat(t):t.type}catch(t){throw new Error("Events must be strings or objects with a string event.type property.")}}function l(t,e){try{return N(t)?t:t.toString().split(e)}catch(e){throw new Error("'".concat(t,"' is not a valid state path."))}}function h(t,e){return"object"==typeof(n=t)&&"value"in n&&"context"in n&&"event"in n&&"_event"in n?t.value:N(t)?f(t):"string"!=typeof t?t:f(l(t,e));var n}function f(t){if(1===t.length)return t[0];for(var e={},n=e,r=0;r{var r,i;n.d(e,{z:()=>ce}),function(t){t.assertEqual=t=>t,t.assertIs=function(t){},t.assertNever=function(t){throw new Error},t.arrayToEnum=t=>{const e={};for(const n of t)e[n]=n;return e},t.getValidEnumValues=e=>{const n=t.objectKeys(e).filter((t=>"number"!=typeof e[e[t]])),r={};for(const t of n)r[t]=e[t];return t.objectValues(r)},t.objectValues=e=>t.objectKeys(e).map((function(t){return e[t]})),t.objectKeys="function"==typeof Object.keys?t=>Object.keys(t):t=>{const e=[];for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.push(n);return e},t.find=(t,e)=>{for(const n of t)if(e(n))return n},t.isInteger="function"==typeof Number.isInteger?t=>Number.isInteger(t):t=>"number"==typeof t&&isFinite(t)&&Math.floor(t)===t,t.joinValues=function(t,e=" | "){return t.map((t=>"string"==typeof t?`'${t}'`:t)).join(e)},t.jsonStringifyReplacer=(t,e)=>"bigint"==typeof e?e.toString():e}(r||(r={})),function(t){t.mergeShapes=(t,e)=>({...t,...e})}(i||(i={}));const a=r.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),s=t=>{switch(typeof t){case"undefined":return a.undefined;case"string":return a.string;case"number":return isNaN(t)?a.nan:a.number;case"boolean":return a.boolean;case"function":return a.function;case"bigint":return a.bigint;case"symbol":return a.symbol;case"object":return Array.isArray(t)?a.array:null===t?a.null:t.then&&"function"==typeof t.then&&t.catch&&"function"==typeof t.catch?a.promise:"undefined"!=typeof Map&&t instanceof Map?a.map:"undefined"!=typeof Set&&t instanceof Set?a.set:"undefined"!=typeof Date&&t instanceof Date?a.date:a.object;default:return a.unknown}},o=r.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class c extends Error{constructor(t){super(),this.issues=[],this.addIssue=t=>{this.issues=[...this.issues,t]},this.addIssues=(t=[])=>{this.issues=[...this.issues,...t]};const e=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,e):this.__proto__=e,this.name="ZodError",this.issues=t}get errors(){return this.issues}format(t){const e=t||function(t){return t.message},n={_errors:[]},r=t=>{for(const i of t.issues)if("invalid_union"===i.code)i.unionErrors.map(r);else if("invalid_return_type"===i.code)r(i.returnTypeError);else if("invalid_arguments"===i.code)r(i.argumentsError);else if(0===i.path.length)n._errors.push(e(i));else{let t=n,r=0;for(;rt.message)){const e={},n=[];for(const r of this.issues)r.path.length>0?(e[r.path[0]]=e[r.path[0]]||[],e[r.path[0]].push(t(r))):n.push(t(r));return{formErrors:n,fieldErrors:e}}get formErrors(){return this.flatten()}}c.create=t=>new c(t);const u=(t,e)=>{let n;switch(t.code){case o.invalid_type:n=t.received===a.undefined?"Required":`Expected ${t.expected}, received ${t.received}`;break;case o.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(t.expected,r.jsonStringifyReplacer)}`;break;case o.unrecognized_keys:n=`Unrecognized key(s) in object: ${r.joinValues(t.keys,", ")}`;break;case o.invalid_union:n="Invalid input";break;case o.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${r.joinValues(t.options)}`;break;case o.invalid_enum_value:n=`Invalid enum value. Expected ${r.joinValues(t.options)}, received '${t.received}'`;break;case o.invalid_arguments:n="Invalid function arguments";break;case o.invalid_return_type:n="Invalid function return type";break;case o.invalid_date:n="Invalid date";break;case o.invalid_string:"object"==typeof t.validation?"includes"in t.validation?(n=`Invalid input: must include "${t.validation.includes}"`,"number"==typeof t.validation.position&&(n=`${n} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?n=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?n=`Invalid input: must end with "${t.validation.endsWith}"`:r.assertNever(t.validation):n="regex"!==t.validation?`Invalid ${t.validation}`:"Invalid";break;case o.too_small:n="array"===t.type?`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:"string"===t.type?`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:"number"===t.type?`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:"date"===t.type?`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:"Invalid input";break;case o.too_big:n="array"===t.type?`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:"string"===t.type?`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:"number"===t.type?`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:"bigint"===t.type?`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:"date"===t.type?`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:"Invalid input";break;case o.custom:n="Invalid input";break;case o.invalid_intersection_types:n="Intersection results could not be merged";break;case o.not_multiple_of:n=`Number must be a multiple of ${t.multipleOf}`;break;case o.not_finite:n="Number must be finite";break;default:n=e.defaultError,r.assertNever(t)}return{message:n}};let d=u;function l(){return d}const h=t=>{const{data:e,path:n,errorMaps:r,issueData:i}=t,a=[...n,...i.path||[]],s={...i,path:a};let o="";const c=r.filter((t=>!!t)).slice().reverse();for(const t of c)o=t(s,{data:e,defaultError:o}).message;return{...i,path:a,message:i.message||o}};function f(t,e){const n=h({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,l(),u].filter((t=>!!t))});t.common.issues.push(n)}class p{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(t,e){const n=[];for(const r of e){if("aborted"===r.status)return v;"dirty"===r.status&&t.dirty(),n.push(r.value)}return{status:t.value,value:n}}static async mergeObjectAsync(t,e){const n=[];for(const t of e)n.push({key:await t.key,value:await t.value});return p.mergeObjectSync(t,n)}static mergeObjectSync(t,e){const n={};for(const r of e){const{key:e,value:i}=r;if("aborted"===e.status)return v;if("aborted"===i.status)return v;"dirty"===e.status&&t.dirty(),"dirty"===i.status&&t.dirty(),"__proto__"===e.value||void 0===i.value&&!r.alwaysSet||(n[e.value]=i.value)}return{status:t.value,value:n}}}const v=Object.freeze({status:"aborted"}),y=t=>({status:"dirty",value:t}),m=t=>({status:"valid",value:t}),g=t=>"aborted"===t.status,_=t=>"dirty"===t.status,x=t=>"valid"===t.status,b=t=>"undefined"!=typeof Promise&&t instanceof Promise;var w;!function(t){t.errToObj=t=>"string"==typeof t?{message:t}:t||{},t.toString=t=>"string"==typeof t?t:null==t?void 0:t.message}(w||(w={}));class k{constructor(t,e,n,r){this._cachedPath=[],this.parent=t,this.data=e,this._path=n,this._key=r}get path(){return this._cachedPath.length||(this._key instanceof Array?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const S=(t,e)=>{if(x(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const e=new c(t.common.issues);return this._error=e,this._error}}};function O(t){if(!t)return{};const{errorMap:e,invalid_type_error:n,required_error:r,description:i}=t;if(e&&(n||r))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return e?{errorMap:e,description:i}:{errorMap:(t,e)=>"invalid_type"!==t.code?{message:e.defaultError}:void 0===e.data?{message:null!=r?r:e.defaultError}:{message:null!=n?n:e.defaultError},description:i}}class E{constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this)}get description(){return this._def.description}_getType(t){return s(t.data)}_getOrReturnCtx(t,e){return e||{common:t.parent.common,data:t.data,parsedType:s(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new p,ctx:{common:t.parent.common,data:t.data,parsedType:s(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const e=this._parse(t);if(b(e))throw new Error("Synchronous parse encountered promise.");return e}_parseAsync(t){const e=this._parse(t);return Promise.resolve(e)}parse(t,e){const n=this.safeParse(t,e);if(n.success)return n.data;throw n.error}safeParse(t,e){var n;const r={common:{issues:[],async:null!==(n=null==e?void 0:e.async)&&void 0!==n&&n,contextualErrorMap:null==e?void 0:e.errorMap},path:(null==e?void 0:e.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:s(t)},i=this._parseSync({data:t,path:r.path,parent:r});return S(r,i)}async parseAsync(t,e){const n=await this.safeParseAsync(t,e);if(n.success)return n.data;throw n.error}async safeParseAsync(t,e){const n={common:{issues:[],contextualErrorMap:null==e?void 0:e.errorMap,async:!0},path:(null==e?void 0:e.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:s(t)},r=this._parse({data:t,path:n.path,parent:n}),i=await(b(r)?r:Promise.resolve(r));return S(n,i)}refine(t,e){const n=t=>"string"==typeof e||void 0===e?{message:e}:"function"==typeof e?e(t):e;return this._refinement(((e,r)=>{const i=t(e),a=()=>r.addIssue({code:o.custom,...n(e)});return"undefined"!=typeof Promise&&i instanceof Promise?i.then((t=>!!t||(a(),!1))):!!i||(a(),!1)}))}refinement(t,e){return this._refinement(((n,r)=>!!t(n)||(r.addIssue("function"==typeof e?e(n,r):e),!1)))}_refinement(t){return new ft({schema:this,typeName:Ot.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}optional(){return pt.create(this,this._def)}nullable(){return vt.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return B.create(this,this._def)}promise(){return ht.create(this,this._def)}or(t){return Q.create([this,t],this._def)}and(t){return et.create(this,t,this._def)}transform(t){return new ft({...O(this._def),schema:this,typeName:Ot.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const e="function"==typeof t?t:()=>t;return new yt({...O(this._def),innerType:this,defaultValue:e,typeName:Ot.ZodDefault})}brand(){return new xt({typeName:Ot.ZodBranded,type:this,...O(this._def)})}catch(t){const e="function"==typeof t?t:()=>t;return new mt({...O(this._def),innerType:this,catchValue:e,typeName:Ot.ZodCatch})}describe(t){return new(0,this.constructor)({...this._def,description:t})}pipe(t){return bt.create(this,t)}readonly(){return wt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const T=/^c[^\s-]{8,}$/i,Z=/^[a-z][a-z0-9]*$/,j=/[0-9A-HJKMNP-TV-Z]{26}/,A=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,N=/^([A-Z0-9_+-]+\.?)*[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,C=/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,M=/^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/,P=/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;class R extends E{constructor(){super(...arguments),this._regex=(t,e,n)=>this.refinement((e=>t.test(e)),{validation:e,code:o.invalid_string,...w.errToObj(n)}),this.nonempty=t=>this.min(1,w.errToObj(t)),this.trim=()=>new R({...this._def,checks:[...this._def.checks,{kind:"trim"}]}),this.toLowerCase=()=>new R({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]}),this.toUpperCase=()=>new R({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}_parse(t){if(this._def.coerce&&(t.data=String(t.data)),this._getType(t)!==a.string){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.string,received:e.parsedType}),v}const e=new p;let n;for(const a of this._def.checks)if("min"===a.kind)t.data.lengtha.value&&(n=this._getOrReturnCtx(t,n),f(n,{code:o.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),e.dirty());else if("length"===a.kind){const r=t.data.length>a.value,i=t.data.length"datetime"===t.kind))}get isEmail(){return!!this._def.checks.find((t=>"email"===t.kind))}get isURL(){return!!this._def.checks.find((t=>"url"===t.kind))}get isEmoji(){return!!this._def.checks.find((t=>"emoji"===t.kind))}get isUUID(){return!!this._def.checks.find((t=>"uuid"===t.kind))}get isCUID(){return!!this._def.checks.find((t=>"cuid"===t.kind))}get isCUID2(){return!!this._def.checks.find((t=>"cuid2"===t.kind))}get isULID(){return!!this._def.checks.find((t=>"ulid"===t.kind))}get isIP(){return!!this._def.checks.find((t=>"ip"===t.kind))}get minLength(){let t=null;for(const e of this._def.checks)"min"===e.kind&&(null===t||e.value>t)&&(t=e.value);return t}get maxLength(){let t=null;for(const e of this._def.checks)"max"===e.kind&&(null===t||e.valuer?n:r;return parseInt(t.toFixed(i).replace(".",""))%parseInt(e.toFixed(i).replace(".",""))/Math.pow(10,i)}R.create=t=>{var e;return new R({checks:[],typeName:Ot.ZodString,coerce:null!==(e=null==t?void 0:t.coerce)&&void 0!==e&&e,...O(t)})};class D extends E{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce&&(t.data=Number(t.data)),this._getType(t)!==a.number){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.number,received:e.parsedType}),v}let e;const n=new p;for(const i of this._def.checks)"int"===i.kind?r.isInteger(t.data)||(e=this._getOrReturnCtx(t,e),f(e,{code:o.invalid_type,expected:"integer",received:"float",message:i.message}),n.dirty()):"min"===i.kind?(i.inclusive?t.datai.value:t.data>=i.value)&&(e=this._getOrReturnCtx(t,e),f(e,{code:o.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),n.dirty()):"multipleOf"===i.kind?0!==I(t.data,i.value)&&(e=this._getOrReturnCtx(t,e),f(e,{code:o.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):"finite"===i.kind?Number.isFinite(t.data)||(e=this._getOrReturnCtx(t,e),f(e,{code:o.not_finite,message:i.message}),n.dirty()):r.assertNever(i);return{status:n.value,value:t.data}}gte(t,e){return this.setLimit("min",t,!0,w.toString(e))}gt(t,e){return this.setLimit("min",t,!1,w.toString(e))}lte(t,e){return this.setLimit("max",t,!0,w.toString(e))}lt(t,e){return this.setLimit("max",t,!1,w.toString(e))}setLimit(t,e,n,r){return new D({...this._def,checks:[...this._def.checks,{kind:t,value:e,inclusive:n,message:w.toString(r)}]})}_addCheck(t){return new D({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:w.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:w.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:w.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:w.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:w.toString(t)})}multipleOf(t,e){return this._addCheck({kind:"multipleOf",value:t,message:w.toString(e)})}finite(t){return this._addCheck({kind:"finite",message:w.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:w.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:w.toString(t)})}get minValue(){let t=null;for(const e of this._def.checks)"min"===e.kind&&(null===t||e.value>t)&&(t=e.value);return t}get maxValue(){let t=null;for(const e of this._def.checks)"max"===e.kind&&(null===t||e.value"int"===t.kind||"multipleOf"===t.kind&&r.isInteger(t.value)))}get isFinite(){let t=null,e=null;for(const n of this._def.checks){if("finite"===n.kind||"int"===n.kind||"multipleOf"===n.kind)return!0;"min"===n.kind?(null===e||n.value>e)&&(e=n.value):"max"===n.kind&&(null===t||n.valuenew D({checks:[],typeName:Ot.ZodNumber,coerce:(null==t?void 0:t.coerce)||!1,...O(t)});class L extends E{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce&&(t.data=BigInt(t.data)),this._getType(t)!==a.bigint){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.bigint,received:e.parsedType}),v}let e;const n=new p;for(const i of this._def.checks)"min"===i.kind?(i.inclusive?t.datai.value:t.data>=i.value)&&(e=this._getOrReturnCtx(t,e),f(e,{code:o.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),n.dirty()):"multipleOf"===i.kind?t.data%i.value!==BigInt(0)&&(e=this._getOrReturnCtx(t,e),f(e,{code:o.not_multiple_of,multipleOf:i.value,message:i.message}),n.dirty()):r.assertNever(i);return{status:n.value,value:t.data}}gte(t,e){return this.setLimit("min",t,!0,w.toString(e))}gt(t,e){return this.setLimit("min",t,!1,w.toString(e))}lte(t,e){return this.setLimit("max",t,!0,w.toString(e))}lt(t,e){return this.setLimit("max",t,!1,w.toString(e))}setLimit(t,e,n,r){return new L({...this._def,checks:[...this._def.checks,{kind:t,value:e,inclusive:n,message:w.toString(r)}]})}_addCheck(t){return new L({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:w.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:w.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:w.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:w.toString(t)})}multipleOf(t,e){return this._addCheck({kind:"multipleOf",value:t,message:w.toString(e)})}get minValue(){let t=null;for(const e of this._def.checks)"min"===e.kind&&(null===t||e.value>t)&&(t=e.value);return t}get maxValue(){let t=null;for(const e of this._def.checks)"max"===e.kind&&(null===t||e.value{var e;return new L({checks:[],typeName:Ot.ZodBigInt,coerce:null!==(e=null==t?void 0:t.coerce)&&void 0!==e&&e,...O(t)})};class V extends E{_parse(t){if(this._def.coerce&&(t.data=Boolean(t.data)),this._getType(t)!==a.boolean){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.boolean,received:e.parsedType}),v}return m(t.data)}}V.create=t=>new V({typeName:Ot.ZodBoolean,coerce:(null==t?void 0:t.coerce)||!1,...O(t)});class $ extends E{_parse(t){if(this._def.coerce&&(t.data=new Date(t.data)),this._getType(t)!==a.date){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.date,received:e.parsedType}),v}if(isNaN(t.data.getTime()))return f(this._getOrReturnCtx(t),{code:o.invalid_date}),v;const e=new p;let n;for(const i of this._def.checks)"min"===i.kind?t.data.getTime()i.value&&(n=this._getOrReturnCtx(t,n),f(n,{code:o.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),e.dirty()):r.assertNever(i);return{status:e.value,value:new Date(t.data.getTime())}}_addCheck(t){return new $({...this._def,checks:[...this._def.checks,t]})}min(t,e){return this._addCheck({kind:"min",value:t.getTime(),message:w.toString(e)})}max(t,e){return this._addCheck({kind:"max",value:t.getTime(),message:w.toString(e)})}get minDate(){let t=null;for(const e of this._def.checks)"min"===e.kind&&(null===t||e.value>t)&&(t=e.value);return null!=t?new Date(t):null}get maxDate(){let t=null;for(const e of this._def.checks)"max"===e.kind&&(null===t||e.valuenew $({checks:[],coerce:(null==t?void 0:t.coerce)||!1,typeName:Ot.ZodDate,...O(t)});class z extends E{_parse(t){if(this._getType(t)!==a.symbol){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.symbol,received:e.parsedType}),v}return m(t.data)}}z.create=t=>new z({typeName:Ot.ZodSymbol,...O(t)});class K extends E{_parse(t){if(this._getType(t)!==a.undefined){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.undefined,received:e.parsedType}),v}return m(t.data)}}K.create=t=>new K({typeName:Ot.ZodUndefined,...O(t)});class H extends E{_parse(t){if(this._getType(t)!==a.null){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.null,received:e.parsedType}),v}return m(t.data)}}H.create=t=>new H({typeName:Ot.ZodNull,...O(t)});class X extends E{constructor(){super(...arguments),this._any=!0}_parse(t){return m(t.data)}}X.create=t=>new X({typeName:Ot.ZodAny,...O(t)});class U extends E{constructor(){super(...arguments),this._unknown=!0}_parse(t){return m(t.data)}}U.create=t=>new U({typeName:Ot.ZodUnknown,...O(t)});class J extends E{_parse(t){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.never,received:e.parsedType}),v}}J.create=t=>new J({typeName:Ot.ZodNever,...O(t)});class q extends E{_parse(t){if(this._getType(t)!==a.undefined){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.void,received:e.parsedType}),v}return m(t.data)}}q.create=t=>new q({typeName:Ot.ZodVoid,...O(t)});class B extends E{_parse(t){const{ctx:e,status:n}=this._processInputParams(t),r=this._def;if(e.parsedType!==a.array)return f(e,{code:o.invalid_type,expected:a.array,received:e.parsedType}),v;if(null!==r.exactLength){const t=e.data.length>r.exactLength.value,i=e.data.lengthr.maxLength.value&&(f(e,{code:o.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),e.common.async)return Promise.all([...e.data].map(((t,n)=>r.type._parseAsync(new k(e,t,e.path,n))))).then((t=>p.mergeArray(n,t)));const i=[...e.data].map(((t,n)=>r.type._parseSync(new k(e,t,e.path,n))));return p.mergeArray(n,i)}get element(){return this._def.type}min(t,e){return new B({...this._def,minLength:{value:t,message:w.toString(e)}})}max(t,e){return new B({...this._def,maxLength:{value:t,message:w.toString(e)}})}length(t,e){return new B({...this._def,exactLength:{value:t,message:w.toString(e)}})}nonempty(t){return this.min(1,t)}}function F(t){if(t instanceof W){const e={};for(const n in t.shape){const r=t.shape[n];e[n]=pt.create(F(r))}return new W({...t._def,shape:()=>e})}return t instanceof B?new B({...t._def,type:F(t.element)}):t instanceof pt?pt.create(F(t.unwrap())):t instanceof vt?vt.create(F(t.unwrap())):t instanceof nt?nt.create(t.items.map((t=>F(t)))):t}B.create=(t,e)=>new B({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Ot.ZodArray,...O(e)});class W extends E{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;const t=this._def.shape(),e=r.objectKeys(t);return this._cached={shape:t,keys:e}}_parse(t){if(this._getType(t)!==a.object){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.object,received:e.parsedType}),v}const{status:e,ctx:n}=this._processInputParams(t),{shape:r,keys:i}=this._getCached(),s=[];if(!(this._def.catchall instanceof J&&"strip"===this._def.unknownKeys))for(const t in n.data)i.includes(t)||s.push(t);const c=[];for(const t of i){const e=r[t],i=n.data[t];c.push({key:{status:"valid",value:t},value:e._parse(new k(n,i,n.path,t)),alwaysSet:t in n.data})}if(this._def.catchall instanceof J){const t=this._def.unknownKeys;if("passthrough"===t)for(const t of s)c.push({key:{status:"valid",value:t},value:{status:"valid",value:n.data[t]}});else if("strict"===t)s.length>0&&(f(n,{code:o.unrecognized_keys,keys:s}),e.dirty());else if("strip"!==t)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const t=this._def.catchall;for(const e of s){const r=n.data[e];c.push({key:{status:"valid",value:e},value:t._parse(new k(n,r,n.path,e)),alwaysSet:e in n.data})}}return n.common.async?Promise.resolve().then((async()=>{const t=[];for(const e of c){const n=await e.key;t.push({key:n,value:await e.value,alwaysSet:e.alwaysSet})}return t})).then((t=>p.mergeObjectSync(e,t))):p.mergeObjectSync(e,c)}get shape(){return this._def.shape()}strict(t){return w.errToObj,new W({...this._def,unknownKeys:"strict",...void 0!==t?{errorMap:(e,n)=>{var r,i,a,s;const o=null!==(a=null===(i=(r=this._def).errorMap)||void 0===i?void 0:i.call(r,e,n).message)&&void 0!==a?a:n.defaultError;return"unrecognized_keys"===e.code?{message:null!==(s=w.errToObj(t).message)&&void 0!==s?s:o}:{message:o}}}:{}})}strip(){return new W({...this._def,unknownKeys:"strip"})}passthrough(){return new W({...this._def,unknownKeys:"passthrough"})}extend(t){return new W({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new W({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:Ot.ZodObject})}setKey(t,e){return this.augment({[t]:e})}catchall(t){return new W({...this._def,catchall:t})}pick(t){const e={};return r.objectKeys(t).forEach((n=>{t[n]&&this.shape[n]&&(e[n]=this.shape[n])})),new W({...this._def,shape:()=>e})}omit(t){const e={};return r.objectKeys(this.shape).forEach((n=>{t[n]||(e[n]=this.shape[n])})),new W({...this._def,shape:()=>e})}deepPartial(){return F(this)}partial(t){const e={};return r.objectKeys(this.shape).forEach((n=>{const r=this.shape[n];t&&!t[n]?e[n]=r:e[n]=r.optional()})),new W({...this._def,shape:()=>e})}required(t){const e={};return r.objectKeys(this.shape).forEach((n=>{if(t&&!t[n])e[n]=this.shape[n];else{let t=this.shape[n];for(;t instanceof pt;)t=t._def.innerType;e[n]=t}})),new W({...this._def,shape:()=>e})}keyof(){return ut(r.objectKeys(this.shape))}}W.create=(t,e)=>new W({shape:()=>t,unknownKeys:"strip",catchall:J.create(),typeName:Ot.ZodObject,...O(e)}),W.strictCreate=(t,e)=>new W({shape:()=>t,unknownKeys:"strict",catchall:J.create(),typeName:Ot.ZodObject,...O(e)}),W.lazycreate=(t,e)=>new W({shape:t,unknownKeys:"strip",catchall:J.create(),typeName:Ot.ZodObject,...O(e)});class Q extends E{_parse(t){const{ctx:e}=this._processInputParams(t),n=this._def.options;if(e.common.async)return Promise.all(n.map((async t=>{const n={...e,common:{...e.common,issues:[]},parent:null};return{result:await t._parseAsync({data:e.data,path:e.path,parent:n}),ctx:n}}))).then((function(t){for(const e of t)if("valid"===e.result.status)return e.result;for(const n of t)if("dirty"===n.result.status)return e.common.issues.push(...n.ctx.common.issues),n.result;const n=t.map((t=>new c(t.ctx.common.issues)));return f(e,{code:o.invalid_union,unionErrors:n}),v}));{let t;const r=[];for(const i of n){const n={...e,common:{...e.common,issues:[]},parent:null},a=i._parseSync({data:e.data,path:e.path,parent:n});if("valid"===a.status)return a;"dirty"!==a.status||t||(t={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(t)return e.common.issues.push(...t.ctx.common.issues),t.result;const i=r.map((t=>new c(t)));return f(e,{code:o.invalid_union,unionErrors:i}),v}}get options(){return this._def.options}}Q.create=(t,e)=>new Q({options:t,typeName:Ot.ZodUnion,...O(e)});const G=t=>t instanceof ot?G(t.schema):t instanceof ft?G(t.innerType()):t instanceof ct?[t.value]:t instanceof dt?t.options:t instanceof lt?Object.keys(t.enum):t instanceof yt?G(t._def.innerType):t instanceof K?[void 0]:t instanceof H?[null]:null;class Y extends E{_parse(t){const{ctx:e}=this._processInputParams(t);if(e.parsedType!==a.object)return f(e,{code:o.invalid_type,expected:a.object,received:e.parsedType}),v;const n=this.discriminator,r=e.data[n],i=this.optionsMap.get(r);return i?e.common.async?i._parseAsync({data:e.data,path:e.path,parent:e}):i._parseSync({data:e.data,path:e.path,parent:e}):(f(e,{code:o.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),v)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,e,n){const r=new Map;for(const n of e){const e=G(n.shape[t]);if(!e)throw new Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(const i of e){if(r.has(i))throw new Error(`Discriminator property ${String(t)} has duplicate value ${String(i)}`);r.set(i,n)}}return new Y({typeName:Ot.ZodDiscriminatedUnion,discriminator:t,options:e,optionsMap:r,...O(n)})}}function tt(t,e){const n=s(t),i=s(e);if(t===e)return{valid:!0,data:t};if(n===a.object&&i===a.object){const n=r.objectKeys(e),i=r.objectKeys(t).filter((t=>-1!==n.indexOf(t))),a={...t,...e};for(const n of i){const r=tt(t[n],e[n]);if(!r.valid)return{valid:!1};a[n]=r.data}return{valid:!0,data:a}}if(n===a.array&&i===a.array){if(t.length!==e.length)return{valid:!1};const n=[];for(let r=0;r{if(g(t)||g(r))return v;const i=tt(t.value,r.value);return i.valid?((_(t)||_(r))&&e.dirty(),{status:e.value,value:i.data}):(f(n,{code:o.invalid_intersection_types}),v)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then((([t,e])=>r(t,e))):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}et.create=(t,e,n)=>new et({left:t,right:e,typeName:Ot.ZodIntersection,...O(n)});class nt extends E{_parse(t){const{status:e,ctx:n}=this._processInputParams(t);if(n.parsedType!==a.array)return f(n,{code:o.invalid_type,expected:a.array,received:n.parsedType}),v;if(n.data.lengththis._def.items.length&&(f(n,{code:o.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),e.dirty());const r=[...n.data].map(((t,e)=>{const r=this._def.items[e]||this._def.rest;return r?r._parse(new k(n,t,n.path,e)):null})).filter((t=>!!t));return n.common.async?Promise.all(r).then((t=>p.mergeArray(e,t))):p.mergeArray(e,r)}get items(){return this._def.items}rest(t){return new nt({...this._def,rest:t})}}nt.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new nt({items:t,typeName:Ot.ZodTuple,rest:null,...O(e)})};class rt extends E{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:e,ctx:n}=this._processInputParams(t);if(n.parsedType!==a.object)return f(n,{code:o.invalid_type,expected:a.object,received:n.parsedType}),v;const r=[],i=this._def.keyType,s=this._def.valueType;for(const t in n.data)r.push({key:i._parse(new k(n,t,n.path,t)),value:s._parse(new k(n,n.data[t],n.path,t))});return n.common.async?p.mergeObjectAsync(e,r):p.mergeObjectSync(e,r)}get element(){return this._def.valueType}static create(t,e,n){return new rt(e instanceof E?{keyType:t,valueType:e,typeName:Ot.ZodRecord,...O(n)}:{keyType:R.create(),valueType:t,typeName:Ot.ZodRecord,...O(e)})}}class it extends E{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:e,ctx:n}=this._processInputParams(t);if(n.parsedType!==a.map)return f(n,{code:o.invalid_type,expected:a.map,received:n.parsedType}),v;const r=this._def.keyType,i=this._def.valueType,s=[...n.data.entries()].map((([t,e],a)=>({key:r._parse(new k(n,t,n.path,[a,"key"])),value:i._parse(new k(n,e,n.path,[a,"value"]))})));if(n.common.async){const t=new Map;return Promise.resolve().then((async()=>{for(const n of s){const r=await n.key,i=await n.value;if("aborted"===r.status||"aborted"===i.status)return v;"dirty"!==r.status&&"dirty"!==i.status||e.dirty(),t.set(r.value,i.value)}return{status:e.value,value:t}}))}{const t=new Map;for(const n of s){const r=n.key,i=n.value;if("aborted"===r.status||"aborted"===i.status)return v;"dirty"!==r.status&&"dirty"!==i.status||e.dirty(),t.set(r.value,i.value)}return{status:e.value,value:t}}}}it.create=(t,e,n)=>new it({valueType:e,keyType:t,typeName:Ot.ZodMap,...O(n)});class at extends E{_parse(t){const{status:e,ctx:n}=this._processInputParams(t);if(n.parsedType!==a.set)return f(n,{code:o.invalid_type,expected:a.set,received:n.parsedType}),v;const r=this._def;null!==r.minSize&&n.data.sizer.maxSize.value&&(f(n,{code:o.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),e.dirty());const i=this._def.valueType;function s(t){const n=new Set;for(const r of t){if("aborted"===r.status)return v;"dirty"===r.status&&e.dirty(),n.add(r.value)}return{status:e.value,value:n}}const c=[...n.data.values()].map(((t,e)=>i._parse(new k(n,t,n.path,e))));return n.common.async?Promise.all(c).then((t=>s(t))):s(c)}min(t,e){return new at({...this._def,minSize:{value:t,message:w.toString(e)}})}max(t,e){return new at({...this._def,maxSize:{value:t,message:w.toString(e)}})}size(t,e){return this.min(t,e).max(t,e)}nonempty(t){return this.min(1,t)}}at.create=(t,e)=>new at({valueType:t,minSize:null,maxSize:null,typeName:Ot.ZodSet,...O(e)});class st extends E{constructor(){super(...arguments),this.validate=this.implement}_parse(t){const{ctx:e}=this._processInputParams(t);if(e.parsedType!==a.function)return f(e,{code:o.invalid_type,expected:a.function,received:e.parsedType}),v;function n(t,n){return h({data:t,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,l(),u].filter((t=>!!t)),issueData:{code:o.invalid_arguments,argumentsError:n}})}function r(t,n){return h({data:t,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,l(),u].filter((t=>!!t)),issueData:{code:o.invalid_return_type,returnTypeError:n}})}const i={errorMap:e.common.contextualErrorMap},s=e.data;if(this._def.returns instanceof ht){const t=this;return m((async function(...e){const a=new c([]),o=await t._def.args.parseAsync(e,i).catch((t=>{throw a.addIssue(n(e,t)),a})),u=await Reflect.apply(s,this,o);return await t._def.returns._def.type.parseAsync(u,i).catch((t=>{throw a.addIssue(r(u,t)),a}))}))}{const t=this;return m((function(...e){const a=t._def.args.safeParse(e,i);if(!a.success)throw new c([n(e,a.error)]);const o=Reflect.apply(s,this,a.data),u=t._def.returns.safeParse(o,i);if(!u.success)throw new c([r(o,u.error)]);return u.data}))}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new st({...this._def,args:nt.create(t).rest(U.create())})}returns(t){return new st({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,e,n){return new st({args:t||nt.create([]).rest(U.create()),returns:e||U.create(),typeName:Ot.ZodFunction,...O(n)})}}class ot extends E{get schema(){return this._def.getter()}_parse(t){const{ctx:e}=this._processInputParams(t);return this._def.getter()._parse({data:e.data,path:e.path,parent:e})}}ot.create=(t,e)=>new ot({getter:t,typeName:Ot.ZodLazy,...O(e)});class ct extends E{_parse(t){if(t.data!==this._def.value){const e=this._getOrReturnCtx(t);return f(e,{received:e.data,code:o.invalid_literal,expected:this._def.value}),v}return{status:"valid",value:t.data}}get value(){return this._def.value}}function ut(t,e){return new dt({values:t,typeName:Ot.ZodEnum,...O(e)})}ct.create=(t,e)=>new ct({value:t,typeName:Ot.ZodLiteral,...O(e)});class dt extends E{_parse(t){if("string"!=typeof t.data){const e=this._getOrReturnCtx(t),n=this._def.values;return f(e,{expected:r.joinValues(n),received:e.parsedType,code:o.invalid_type}),v}if(-1===this._def.values.indexOf(t.data)){const e=this._getOrReturnCtx(t),n=this._def.values;return f(e,{received:e.data,code:o.invalid_enum_value,options:n}),v}return m(t.data)}get options(){return this._def.values}get enum(){const t={};for(const e of this._def.values)t[e]=e;return t}get Values(){const t={};for(const e of this._def.values)t[e]=e;return t}get Enum(){const t={};for(const e of this._def.values)t[e]=e;return t}extract(t){return dt.create(t)}exclude(t){return dt.create(this.options.filter((e=>!t.includes(e))))}}dt.create=ut;class lt extends E{_parse(t){const e=r.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(t);if(n.parsedType!==a.string&&n.parsedType!==a.number){const t=r.objectValues(e);return f(n,{expected:r.joinValues(t),received:n.parsedType,code:o.invalid_type}),v}if(-1===e.indexOf(t.data)){const t=r.objectValues(e);return f(n,{received:n.data,code:o.invalid_enum_value,options:t}),v}return m(t.data)}get enum(){return this._def.values}}lt.create=(t,e)=>new lt({values:t,typeName:Ot.ZodNativeEnum,...O(e)});class ht extends E{unwrap(){return this._def.type}_parse(t){const{ctx:e}=this._processInputParams(t);if(e.parsedType!==a.promise&&!1===e.common.async)return f(e,{code:o.invalid_type,expected:a.promise,received:e.parsedType}),v;const n=e.parsedType===a.promise?e.data:Promise.resolve(e.data);return m(n.then((t=>this._def.type.parseAsync(t,{path:e.path,errorMap:e.common.contextualErrorMap}))))}}ht.create=(t,e)=>new ht({type:t,typeName:Ot.ZodPromise,...O(e)});class ft extends E{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ot.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:e,ctx:n}=this._processInputParams(t),i=this._def.effect||null,a={addIssue:t=>{f(n,t),t.fatal?e.abort():e.dirty()},get path(){return n.path}};if(a.addIssue=a.addIssue.bind(a),"preprocess"===i.type){const t=i.transform(n.data,a);return n.common.issues.length?{status:"dirty",value:n.data}:n.common.async?Promise.resolve(t).then((t=>this._def.schema._parseAsync({data:t,path:n.path,parent:n}))):this._def.schema._parseSync({data:t,path:n.path,parent:n})}if("refinement"===i.type){const t=t=>{const e=i.refinement(t,a);if(n.common.async)return Promise.resolve(e);if(e instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return t};if(!1===n.common.async){const r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return"aborted"===r.status?v:("dirty"===r.status&&e.dirty(),t(r.value),{status:e.value,value:r.value})}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((n=>"aborted"===n.status?v:("dirty"===n.status&&e.dirty(),t(n.value).then((()=>({status:e.value,value:n.value}))))))}if("transform"===i.type){if(!1===n.common.async){const t=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!x(t))return t;const r=i.transform(t.value,a);if(r instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:e.value,value:r}}return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then((t=>x(t)?Promise.resolve(i.transform(t.value,a)).then((t=>({status:e.value,value:t}))):t))}r.assertNever(i)}}ft.create=(t,e,n)=>new ft({schema:t,typeName:Ot.ZodEffects,effect:e,...O(n)}),ft.createWithPreprocess=(t,e,n)=>new ft({schema:e,effect:{type:"preprocess",transform:t},typeName:Ot.ZodEffects,...O(n)});class pt extends E{_parse(t){return this._getType(t)===a.undefined?m(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}pt.create=(t,e)=>new pt({innerType:t,typeName:Ot.ZodOptional,...O(e)});class vt extends E{_parse(t){return this._getType(t)===a.null?m(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}}vt.create=(t,e)=>new vt({innerType:t,typeName:Ot.ZodNullable,...O(e)});class yt extends E{_parse(t){const{ctx:e}=this._processInputParams(t);let n=e.data;return e.parsedType===a.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:e.path,parent:e})}removeDefault(){return this._def.innerType}}yt.create=(t,e)=>new yt({innerType:t,typeName:Ot.ZodDefault,defaultValue:"function"==typeof e.default?e.default:()=>e.default,...O(e)});class mt extends E{_parse(t){const{ctx:e}=this._processInputParams(t),n={...e,common:{...e.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return b(r)?r.then((t=>({status:"valid",value:"valid"===t.status?t.value:this._def.catchValue({get error(){return new c(n.common.issues)},input:n.data})}))):{status:"valid",value:"valid"===r.status?r.value:this._def.catchValue({get error(){return new c(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}}mt.create=(t,e)=>new mt({innerType:t,typeName:Ot.ZodCatch,catchValue:"function"==typeof e.catch?e.catch:()=>e.catch,...O(e)});class gt extends E{_parse(t){if(this._getType(t)!==a.nan){const e=this._getOrReturnCtx(t);return f(e,{code:o.invalid_type,expected:a.nan,received:e.parsedType}),v}return{status:"valid",value:t.data}}}gt.create=t=>new gt({typeName:Ot.ZodNaN,...O(t)});const _t=Symbol("zod_brand");class xt extends E{_parse(t){const{ctx:e}=this._processInputParams(t),n=e.data;return this._def.type._parse({data:n,path:e.path,parent:e})}unwrap(){return this._def.type}}class bt extends E{_parse(t){const{status:e,ctx:n}=this._processInputParams(t);if(n.common.async)return(async()=>{const t=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return"aborted"===t.status?v:"dirty"===t.status?(e.dirty(),y(t.value)):this._def.out._parseAsync({data:t.value,path:n.path,parent:n})})();{const t=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return"aborted"===t.status?v:"dirty"===t.status?(e.dirty(),{status:"dirty",value:t.value}):this._def.out._parseSync({data:t.value,path:n.path,parent:n})}}static create(t,e){return new bt({in:t,out:e,typeName:Ot.ZodPipeline})}}class wt extends E{_parse(t){const e=this._def.innerType._parse(t);return x(e)&&(e.value=Object.freeze(e.value)),e}}wt.create=(t,e)=>new wt({innerType:t,typeName:Ot.ZodReadonly,...O(e)});const kt=(t,e={},n)=>t?X.create().superRefine(((r,i)=>{var a,s;if(!t(r)){const t="function"==typeof e?e(r):"string"==typeof e?{message:e}:e,o=null===(s=null!==(a=t.fatal)&&void 0!==a?a:n)||void 0===s||s,c="string"==typeof t?{message:t}:t;i.addIssue({code:"custom",...c,fatal:o})}})):X.create(),St={object:W.lazycreate};var Ot;!function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"}(Ot||(Ot={}));const Et=R.create,Tt=D.create,Zt=gt.create,jt=L.create,At=V.create,Nt=$.create,Ct=z.create,Mt=K.create,Pt=H.create,Rt=X.create,It=U.create,Dt=J.create,Lt=q.create,Vt=B.create,$t=W.create,zt=W.strictCreate,Kt=Q.create,Ht=Y.create,Xt=et.create,Ut=nt.create,Jt=rt.create,qt=it.create,Bt=at.create,Ft=st.create,Wt=ot.create,Qt=ct.create,Gt=dt.create,Yt=lt.create,te=ht.create,ee=ft.create,ne=pt.create,re=vt.create,ie=ft.createWithPreprocess,ae=bt.create,se={string:t=>R.create({...t,coerce:!0}),number:t=>D.create({...t,coerce:!0}),boolean:t=>V.create({...t,coerce:!0}),bigint:t=>L.create({...t,coerce:!0}),date:t=>$.create({...t,coerce:!0})},oe=v;var ce=Object.freeze({__proto__:null,defaultErrorMap:u,setErrorMap:function(t){d=t},getErrorMap:l,makeIssue:h,EMPTY_PATH:[],addIssueToContext:f,ParseStatus:p,INVALID:v,DIRTY:y,OK:m,isAborted:g,isDirty:_,isValid:x,isAsync:b,get util(){return r},get objectUtil(){return i},ZodParsedType:a,getParsedType:s,ZodType:E,ZodString:R,ZodNumber:D,ZodBigInt:L,ZodBoolean:V,ZodDate:$,ZodSymbol:z,ZodUndefined:K,ZodNull:H,ZodAny:X,ZodUnknown:U,ZodNever:J,ZodVoid:q,ZodArray:B,ZodObject:W,ZodUnion:Q,ZodDiscriminatedUnion:Y,ZodIntersection:et,ZodTuple:nt,ZodRecord:rt,ZodMap:it,ZodSet:at,ZodFunction:st,ZodLazy:ot,ZodLiteral:ct,ZodEnum:dt,ZodNativeEnum:lt,ZodPromise:ht,ZodEffects:ft,ZodTransformer:ft,ZodOptional:pt,ZodNullable:vt,ZodDefault:yt,ZodCatch:mt,ZodNaN:gt,BRAND:_t,ZodBranded:xt,ZodPipeline:bt,ZodReadonly:wt,custom:kt,Schema:E,ZodSchema:E,late:St,get ZodFirstPartyTypeKind(){return Ot},coerce:se,any:Rt,array:Vt,bigint:jt,boolean:At,date:Nt,discriminatedUnion:Ht,effect:ee,enum:Gt,function:Ft,instanceof:(t,e={message:`Input not instance of ${t.name}`})=>kt((e=>e instanceof t),e),intersection:Xt,lazy:Wt,literal:Qt,map:qt,nan:Zt,nativeEnum:Yt,never:Dt,null:Pt,nullable:re,number:Tt,object:$t,oboolean:()=>At().optional(),onumber:()=>Tt().optional(),optional:ne,ostring:()=>Et().optional(),pipeline:ae,preprocess:ie,promise:te,record:Jt,set:Bt,strictObject:zt,string:Et,symbol:Ct,transformer:ee,tuple:Ut,undefined:Mt,union:Kt,unknown:It,void:Lt,NEVER:oe,ZodIssueCode:o,quotelessJson:t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),ZodError:c})}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js.LICENSE.txt b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js.LICENSE.txt
deleted file mode 100644
index e80e55be..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8626.js.LICENSE.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-
-/**
- * @license React
- * use-sync-external-store-shim.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-/**
- * @license React
- * use-sync-external-store-shim/with-selector.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8758.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8758.js
deleted file mode 100644
index eb13f50d..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8758.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[8758],{17666:(e,t,r)=>{r.d(t,{Z:()=>C});var a=r(69307),s=r(65736),n=r(94333),i=r(69771),o=r(9818),l=r(92819),u=r(7862),c=r.n(u),d=r(86020),m=r(67221),p=r(81921),y=r(17844),g=r(65994),h=r(10431);function f(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||0===e.length)return null;const a=e.slice(0),s=a.pop();if(s.showFilters(t,r)){const e=(0,h.flattenFilters)(s.filters),r=t[s.param]||s.defaultValue||"all";return(0,l.find)(e,{value:r})}return f(a,t,r)}function b(e){return t=>(0,i.format)(e,t)}class v extends a.Component{shouldComponentUpdate(e){return e.isRequesting!==this.props.isRequesting||e.primaryData.isRequesting!==this.props.primaryData.isRequesting||e.secondaryData.isRequesting!==this.props.secondaryData.isRequesting||!(0,l.isEqual)(e.query,this.props.query)}getItemChartData(){const{primaryData:e,selectedChart:t}=this.props;return e.data.intervals.map((function(e){const r={};return e.subtotals.segments.forEach((function(e){if(e.segment_label){const a=r[e.segment_label]?e.segment_label+" (#"+e.segment_id+")":e.segment_label;r[e.segment_id]={label:a,value:e.subtotals[t.key]||0}}})),{date:(0,i.format)("Y-m-d\\TH:i:s",e.date_start),...r}}))}getTimeChartData(){const{query:e,primaryData:t,secondaryData:r,selectedChart:a,defaultDateRange:s}=this.props,n=(0,p.getIntervalForQuery)(e,s),{primary:o,secondary:l}=(0,p.getCurrentDates)(e,s);return t.data.intervals.map((function(t,s){const u=(0,p.getPreviousDate)(t.date_start,o.after,l.after,e.compare,n),c=r.data.intervals[s];return{date:(0,i.format)("Y-m-d\\TH:i:s",t.date_start),primary:{label:`${o.label} (${o.range})`,labelDate:t.date_start,value:t.subtotals[a.key]||0},secondary:{label:`${l.label} (${l.range})`,labelDate:u.format("YYYY-MM-DD HH:mm:ss"),value:c&&c.subtotals[a.key]||0}}}))}getTimeChartTotals(){const{primaryData:e,secondaryData:t,selectedChart:r}=this.props;return{primary:(0,l.get)(e,["data","totals",r.key],null),secondary:(0,l.get)(t,["data","totals",r.key],null)}}renderChart(e,t,r,n){const{emptySearchResults:i,filterParam:o,interactiveLegend:l,itemsLabel:u,legendPosition:c,path:y,query:g,selectedChart:h,showHeaderControls:f,primaryData:v,defaultDateRange:C}=this.props,R=(0,p.getIntervalForQuery)(g,C),D=(0,p.getAllowedIntervalsForQuery)(g,C),q=(0,p.getDateFormatsForInterval)(R,v.data.intervals.length,{type:"php"}),_=i?(0,s.__)("No data for the current search","woocommerce"):(0,s.__)("No data for the selected date range","woocommerce"),{formatAmount:E,getCurrencyConfig:T}=this.context;return(0,a.createElement)(d.Chart,{allowedIntervals:D,data:r,dateParser:"%Y-%m-%dT%H:%M:%S",emptyMessage:_,filterParam:o,interactiveLegend:l,interval:R,isRequesting:t,itemsLabel:u,legendPosition:c,legendTotals:n,mode:e,path:y,query:g,screenReaderFormat:b(q.screenReaderFormat),showHeaderControls:f,title:h.label,tooltipLabelFormat:b(q.tooltipLabelFormat),tooltipTitle:"time-comparison"===e&&h.label||null,tooltipValueFormat:(0,m.getTooltipValueFormat)(h.type,E),chartType:(0,p.getChartTypeForQuery)(g),valueType:h.type,xFormat:b(q.xFormat),x2Format:b(q.x2Format),currency:T()})}renderItemComparison(){const{isRequesting:e,primaryData:t}=this.props;if(t.isError)return(0,a.createElement)(g.Z,null);const r=e||t.isRequesting,s=this.getItemChartData();return this.renderChart("item-comparison",r,s)}renderTimeComparison(){const{isRequesting:e,primaryData:t,secondaryData:r}=this.props;if(!t||t.isError||r.isError)return(0,a.createElement)(g.Z,null);const s=e||t.isRequesting||r.isRequesting,n=this.getTimeChartData(),i=this.getTimeChartTotals();return this.renderChart("time-comparison",s,n,i)}render(){const{mode:e}=this.props;return"item-comparison"===e?this.renderItemComparison():this.renderTimeComparison()}}v.contextType=y.CurrencyContext,v.propTypes={filters:c().array,isRequesting:c().bool,itemsLabel:c().string,limitProperties:c().array,mode:c().string,path:c().string.isRequired,primaryData:c().object,query:c().object.isRequired,secondaryData:c().object,selectedChart:c().shape({key:c().string.isRequired,label:c().string.isRequired,order:c().oneOf(["asc","desc"]),orderby:c().string,type:c().oneOf(["average","number","currency"]).isRequired}).isRequired},v.defaultProps={isRequesting:!1,primaryData:{data:{intervals:[]},isError:!1,isRequesting:!1},secondaryData:{data:{intervals:[]},isError:!1,isRequesting:!1}};const C=(0,n.compose)((0,o.withSelect)(((e,t)=>{const{charts:r,endpoint:a,filters:s,isRequesting:n,limitProperties:i,query:o,advancedFilters:u}=t,c=i||[a],d=f(s,o),p=(0,l.get)(d,["settings","param"]),y=t.mode||function(e,t){if(e&&t){const r=(0,l.get)(e,["settings","param"]);if(!r||Object.keys(t).includes(r))return(0,l.get)(e,["chartMode"])}return null}(d,o)||"time-comparison",{woocommerce_default_date_range:g}=e(m.SETTINGS_STORE_NAME).getSetting("wc_admin","wcAdminSettings"),h=e(m.REPORTS_STORE_NAME),b={mode:y,filterParam:p,defaultDateRange:g};if(n)return b;const v=c.some((e=>o[e]&&o[e].length));if(o.search&&!v)return{...b,emptySearchResults:!0};const C=r&&r.map((e=>e.key)),R=(0,m.getReportChartData)({endpoint:a,dataType:"primary",query:o,selector:h,limitBy:c,filters:s,advancedFilters:u,defaultDateRange:g,fields:C});if("item-comparison"===y)return{...b,primaryData:R};const D=(0,m.getReportChartData)({endpoint:a,dataType:"secondary",query:o,selector:h,limitBy:c,filters:s,advancedFilters:u,defaultDateRange:g,fields:C});return{...b,primaryData:R,secondaryData:D}})))(v)},59205:(e,t,r)=>{r.d(t,{Z:()=>b});var a=r(69307),s=r(65736),n=r(94333),i=r(9818),o=r(7862),l=r.n(o),u=r(10431),c=r(86020),d=r(81595),m=r(67221),p=r(81921),y=r(14599),g=r(17844),h=r(65994);class f extends a.Component{formatVal(e,t){const{formatAmount:r,getCurrencyConfig:a}=this.context;return"currency"===t?r(e):(0,d.formatValue)(a(),t,e)}getValues(e,t){const{emptySearchResults:r,summaryData:a}=this.props,{totals:s}=a,n=s.primary?s.primary[e]:0,i=s.secondary?s.secondary[e]:0,o=r?0:n,l=r?0:i;return{delta:(0,d.calculateDelta)(o,l),prevValue:this.formatVal(l,t),value:this.formatVal(o,t)}}render(){const{charts:e,query:t,selectedChart:r,summaryData:n,endpoint:i,report:o,defaultDateRange:l}=this.props,{isError:d,isRequesting:m}=n;if(d)return(0,a.createElement)(h.Z,null);if(m)return(0,a.createElement)(c.SummaryListPlaceholder,{numberOfItems:e.length});const{compare:g}=(0,p.getDateParamsFromQuery)(t,l);return(0,a.createElement)(c.SummaryList,null,(t=>{let{onToggle:n}=t;return e.map((e=>{const{key:t,order:l,orderby:d,label:m,type:p,isReverseTrend:h,labelTooltipText:f}=e,b={chart:t};d&&(b.orderby=d),l&&(b.order=l);const v=(0,u.getNewPath)(b),C=r.key===t,{delta:R,prevValue:D,value:q}=this.getValues(t,p);return(0,a.createElement)(c.SummaryNumber,{key:t,delta:R,href:v,label:m,reverseTrend:h,prevLabel:"previous_period"===g?(0,s.__)("Previous period:","woocommerce"):(0,s.__)("Previous year:","woocommerce"),prevValue:D,selected:C,value:q,labelTooltipText:f,onLinkClickCallback:()=>{n&&n(),(0,y.recordEvent)("analytics_chart_tab_click",{report:o||i,key:t})}})}))}))}}f.propTypes={charts:l().array.isRequired,endpoint:l().string.isRequired,limitProperties:l().array,query:l().object.isRequired,selectedChart:l().shape({key:l().string.isRequired,label:l().string.isRequired,order:l().oneOf(["asc","desc"]),orderby:l().string,type:l().oneOf(["average","number","currency"]).isRequired}).isRequired,summaryData:l().object,report:l().string},f.defaultProps={summaryData:{totals:{primary:{},secondary:{}},isError:!1}},f.contextType=g.CurrencyContext;const b=(0,n.compose)((0,i.withSelect)(((e,t)=>{const{charts:r,endpoint:a,limitProperties:s,query:n,filters:i,advancedFilters:o}=t,l=s||[a],u=l.some((e=>n[e]&&n[e].length));if(n.search&&!u)return{emptySearchResults:!0};const c=r&&r.map((e=>e.key)),{woocommerce_default_date_range:d}=e(m.SETTINGS_STORE_NAME).getSetting("wc_admin","wcAdminSettings");return{summaryData:(0,m.getSummaryNumbers)({endpoint:a,query:n,select:e,limitBy:l,filters:i,advancedFilters:o,defaultDateRange:d,fields:c}),defaultDateRange:d}})))(f)},97190:(e,t,r)=>{function a(e,t,r){return!!t&&e&&t<=r==="instock"}r.d(t,{d:()=>a})},60017:(e,t,r)=>{r.d(t,{I:()=>s});var a=r(65736);function s(e){return[e.country,e.state,e.name||(0,a.__)("TAX","woocommerce"),e.priority].map((e=>e.toString().toUpperCase().trim())).filter(Boolean).join("-")}},36309:(e,t,r)=>{r.d(t,{FI:()=>h,V1:()=>f,YC:()=>m,hQ:()=>p,jk:()=>y,oC:()=>g,qc:()=>d,uC:()=>b});var a=r(96483),s=r(86989),n=r.n(s),i=r(92819),o=r(10431),l=r(67221),u=r(60017),c=r(73463);function d(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.identity;return function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",s=arguments.length>1?arguments[1]:void 0;const i="function"==typeof e?e(s):e,l=(0,o.getIdsFromQuery)(r);if(l.length<1)return Promise.resolve([]);const u={include:l.join(","),per_page:l.length};return n()({path:(0,a.addQueryArgs)(i,u)}).then((e=>e.map(t)))}}d(l.NAMESPACE+"/products/attributes",(e=>({key:e.id,label:e.name})));const m=d(l.NAMESPACE+"/products/categories",(e=>({key:e.id,label:e.name}))),p=d(l.NAMESPACE+"/coupons",(e=>({key:e.id,label:e.code}))),y=d(l.NAMESPACE+"/customers",(e=>({key:e.id,label:e.name}))),g=d(l.NAMESPACE+"/products",(e=>({key:e.id,label:e.name}))),h=d(l.NAMESPACE+"/taxes",(e=>({key:e.id,label:(0,u.I)(e)})));function f(e){let{attributes:t,name:r}=e;const a=(0,c.O3)("variationTitleAttributesSeparator"," - ");if(r&&r.indexOf(a)>-1)return r;const s=(t||[]).map((e=>{let{option:t}=e;return t})).join(", ");return s?r+a+s:r}const b=d((e=>{let{products:t}=e;return t?l.NAMESPACE+`/products/${t}/variations`:l.NAMESPACE+"/variations"}),(e=>({key:e.id,label:f(e)})))},78851:(e,t,r)=>{r.d(t,{Z:()=>s});var a=r(92819);function s(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const r=(0,a.find)(t,{key:e});return r||t[0]}}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8994.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8994.js
deleted file mode 100644
index 5670fd34..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/8994.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[8994],{8994:(M,I,N)=>{N.r(I);var j=N(69307),g=N(67221),i=N(9818),D=N(98817),z=N(72456),e=N(94333),c=N(65736),S=N(92819),T=N(86020),u=N(55609),A=N(14599),o=N(64214);const t=M=>{let{onConnect:I}=M;return(0,j.createElement)(o.Z,{onConnect:()=>{(0,A.recordEvent)("tasklist_shipping_recommendation_connect_store",{connect:!0}),null==I||I()}})};var y=N(34704),a=N(36437);const n=M=>"object"==typeof M&&null!==M,O=M=>{let{nextStep:I,pluginsToActivate:N}=M;const{updateOptions:D}=(0,i.useDispatch)(g.OPTIONS_STORE_NAME),{isResolving:z,tosAccepted:e}=(0,i.useSelect)((M=>{const{getOption:I,hasFinishedResolution:N}=M(g.OPTIONS_STORE_NAME),j=I("wc_connect_options");return{isResolving:!N("getOption",["woocommerce_setup_jetpack_opted_in"])||!N("getOption",["wc_connect_options"]),tosAccepted:n(j)&&(null==j?void 0:j.tos_accepted)||"1"===I("woocommerce_setup_jetpack_opted_in")}}));return(0,j.useEffect)((()=>{e&&!N.length&&I()}),[I,N,e]),z?null:(0,j.createElement)(j.Fragment,null,!e&&(0,j.createElement)(a.O,{buttonText:(0,c.__)("Install & enable","woocommerce")}),(0,j.createElement)(T.Plugins,{onComplete:(M,N)=>{(0,y.a)(N),(0,A.recordEvent)("tasklist_shipping_recommendation_install_extensions",{install_extensions:!0}),D({woocommerce_setup_jetpack_opted_in:!0}),I()},onError:(M,I)=>(0,y.a)(I),pluginSlugs:N}))};var l=N(82580),C=N(33414),s=N(58670);const L=M=>{let{nextStep:I,onLocationComplete:N}=M;const{createNotice:D}=(0,i.useDispatch)("core/notices"),{updateAndPersistSettingsForGroup:z}=(0,i.useDispatch)(g.SETTINGS_STORE_NAME),{generalSettings:e,isResolving:c}=(0,i.useSelect)((M=>{var I;const{getSettings:N,hasFinishedResolution:j}=M(g.SETTINGS_STORE_NAME);return{generalSettings:null===(I=N("general"))||void 0===I?void 0:I.general,isResolving:!j("getSettings",["general"])}}));return(0,j.useEffect)((()=>{!c&&(0,C.AO)(e||{})&&N()}),[e,N,c]),c?null:(0,j.createElement)(s.Z,{onComplete:M=>{const N=(0,l.so)(M.countryState);(0,A.recordEvent)("tasklist_shipping_recommendation_set_location",{country:N}),I()},isSettingsRequesting:!1,settings:e,updateAndPersistSettingsForGroup:z,createNotice:D})};var Y=N(35484),m=N(43347),E=N(42701),x=N(91127),d=N(67097);const w=[{icon:m,title:(0,c.__)("Buy postage when you need it","woocommerce"),description:(0,c.__)("No need to wonder where that stampbook went.","woocommerce")},{icon:E,title:(0,c.__)("Print at home","woocommerce"),description:(0,c.__)("Pick up an order, then just pay, print, package and post.","woocommerce")},{icon:x,title:(0,c.__)("Discounted rates","woocommerce"),description:(0,c.__)("Access discounted shipping rates with DHL and USPS.","woocommerce")}],Z=()=>(0,j.createElement)(d.L,{logo:{image:Y},features:w});var k=N(74617);const Q=["woocommerce-services"],p=(0,e.compose)((0,i.withSelect)((M=>{var I;const{getSettings:N}=M(g.SETTINGS_STORE_NAME),{hasFinishedResolution:j}=M(g.OPTIONS_STORE_NAME),{getActivePlugins:i}=M(g.PLUGINS_STORE_NAME);return{activePlugins:i(),generalSettings:null===(I=N("general"))||void 0===I?void 0:I.general,isJetpackConnected:M(g.PLUGINS_STORE_NAME).isJetpackConnected(),isResolving:!j("getOption",["woocommerce_setup_jetpack_opted_in"])||!j("getOption",["wc_connect_options"])||!M(g.PLUGINS_STORE_NAME).hasFinishedResolution("isJetpackConnected")}})))((M=>{let{activePlugins:I,isJetpackConnected:N,isResolving:g}=M;const[i,D]=(0,j.useState)([]),[z,e]=(0,j.useState)(0),[A,o]=(0,j.useState)(!1),[y,a]=(0,j.useState)(!1),n=()=>{e(z+1)},l=()=>{var M;o(!0),null!==(M=window)&&void 0!==M&&M.location&&(window.location.href=(0,k.getAdminLink)("admin.php?page=wc-settings&tab=shipping§ion=woocommerce-services-settings"))};(0,j.useEffect)((()=>{const M=(0,S.difference)(Q,I);!g&&0===M.length&&N&&l(),M.length<=i.length||D(M)}),[I,N,g,i]);const C=[{key:"store_location",label:(0,c.__)("Set store location","woocommerce"),description:(0,c.__)("The address from which your business operates","woocommerce"),content:(0,j.createElement)(L,{nextStep:n,onLocationComplete:()=>{y||(a(!0),n())}}),onClick:()=>{e(0)}},{key:"plugins",label:(0,c.__)("Install WooCommerce Shipping","woocommerce"),description:(0,c.__)("Enable shipping label printing and discounted rates","woocommerce"),content:(0,j.createElement)("div",null,(0,j.createElement)(Z,null),(0,j.createElement)(O,{nextStep:n,pluginsToActivate:i}))},{key:"connect",label:(0,c.__)("Connect your store","woocommerce"),description:(0,c.__)("Connect your store to WordPress.com to enable WooCommerce Shipping","woocommerce"),content:N?(0,j.createElement)(u.Button,{onClick:l,isBusy:A,isPrimary:!0},(0,c.__)("Complete task","woocommerce")):(0,j.createElement)(t,null)}],s=C[z];return(0,j.createElement)("div",{className:"woocommerce-task-shipping-recommendation"},(0,j.createElement)(u.Card,{className:"woocommerce-task-card"},(0,j.createElement)(u.CardBody,null,(0,j.createElement)(T.Stepper,{isPending:g,isVertical:!0,currentStep:s.key,steps:C}))))}));(0,D.registerPlugin)("wc-admin-onboarding-task-shipping-recommendation",{scope:"woocommerce-tasks",render:()=>(0,j.createElement)(z.WooOnboardingTask,{id:"shipping-recommendation"},(M=>{let{onComplete:I,query:N,task:g}=M;return(0,j.createElement)(p,{onComplete:I,query:N,task:g})}))})},91127:M=>{M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC42NDU1MDgiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgcng9IjQiIGZpbGw9IiNGNkY3RjciLz4KPHJlY3QgeD0iMTAuNzI5IiB5PSIxMC4wODM0IiB3aWR0aD0iMi41IiBoZWlnaHQ9IjIuNSIgcng9IjEuMjUiIHN0cm9rZT0iIzhDOEY5NCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHJlY3QgeD0iMTYuMDYyNSIgeT0iMTUuNDE2NyIgd2lkdGg9IjIuNSIgaGVpZ2h0PSIyLjUiIHJ4PSIxLjI1IiBzdHJva2U9IiM4QzhGOTQiIHN0cm9rZS13aWR0aD0iMS41Ii8+CjxsaW5lIHgxPSIxMC42NDU1IiB5MT0iMTcuNjA2MSIgeDI9IjE4LjI1MTUiIHkyPSIxMC4wMDAxIiBzdHJva2U9IiM4QzhGOTQiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+Cg=="},42701:M=>{M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC42NDU1MDgiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgcng9IjQiIGZpbGw9IiNGNkY3RjciLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xOS45Nzg3IDguNjY2NzFWMTYuNjY2N0wxNS45Nzg3IDIwLjY2NjdIMTAuNjQ1M0M5LjkwODY4IDIwLjY2NjcgOS4zMTIwMSAyMC4wNyA5LjMxMjAxIDE5LjMzMzRWOC42NjY3MUM5LjMxMjAxIDcuOTMwMDQgOS45MDg2OCA3LjMzMzM3IDEwLjY0NTMgNy4zMzMzN0gxOC42NDUzQzE5LjM4MiA3LjMzMzM3IDE5Ljk3ODcgNy45MzAwNCAxOS45Nzg3IDguNjY2NzFaTTExLjk3ODcgMTEuMzMzNEgxNy4zMTJWMTBIMTEuOTc4N1YxMS4zMzM0Wk0xMS45Nzg3IDEyLjY2NjdIMTcuMzEyVjE0SDExLjk3ODdWMTIuNjY2N1pNMTguNjQ1MyA4LjY2NjcxVjE1LjMzMzRIMTUuOTc4N0MxNS4yNDIgMTUuMzMzNCAxNC42NDUzIDE1LjkzIDE0LjY0NTMgMTYuNjY2N1YxOS4zMzM0SDEwLjY0NTNWOC42NjY3MUgxOC42NDUzWiIgZmlsbD0iYmxhY2siLz4KPG1hc2sgaWQ9Im1hc2swXzg4N18xMTY5MjAiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjkiIHk9IjciIHdpZHRoPSIxMSIgaGVpZ2h0PSIxNCI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTkuOTc4NyA4LjY2NjcxVjE2LjY2NjdMMTUuOTc4NyAyMC42NjY3SDEwLjY0NTNDOS45MDg2OCAyMC42NjY3IDkuMzEyMDEgMjAuMDcgOS4zMTIwMSAxOS4zMzM0VjguNjY2NzFDOS4zMTIwMSA3LjkzMDA0IDkuOTA4NjggNy4zMzMzNyAxMC42NDUzIDcuMzMzMzdIMTguNjQ1M0MxOS4zODIgNy4zMzMzNyAxOS45Nzg3IDcuOTMwMDQgMTkuOTc4NyA4LjY2NjcxWk0xMS45Nzg3IDExLjMzMzRIMTcuMzEyVjEwSDExLjk3ODdWMTEuMzMzNFpNMTEuOTc4NyAxMi42NjY3SDE3LjMxMlYxNEgxMS45Nzg3VjEyLjY2NjdaTTE4LjY0NTMgOC42NjY3MVYxNS4zMzM0SDE1Ljk3ODdDMTUuMjQyIDE1LjMzMzQgMTQuNjQ1MyAxNS45MyAxNC42NDUzIDE2LjY2NjdWMTkuMzMzNEgxMC42NDUzVjguNjY2NzFIMTguNjQ1M1oiIGZpbGw9IndoaXRlIi8+CjwvbWFzaz4KPGcgbWFzaz0idXJsKCNtYXNrMF84ODdfMTE2OTIwKSI+CjxyZWN0IHg9IjYuNjQ1NTEiIHk9IjYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iIzhDOEY5NCIvPgo8L2c+Cjwvc3ZnPgo="},43347:M=>{M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOSAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3QgeD0iMC42NDU1MDgiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgcng9IjQiIGZpbGw9IiNGNkY3RjciLz4KPG1hc2sgaWQ9Im1hc2swXzg4N18xMTY5MTQiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjciIHk9IjgiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxMyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjEuMzEyMyAxNy4zMzMzSDE5LjMxMjNWMTkuMzMzM0MxOS4zMTIzIDIwLjA3IDE4LjcxNTcgMjAuNjY2NyAxNy45NzkgMjAuNjY2N0gxMS4zMTIzQzEwLjU3NTcgMjAuNjY2NyA5Ljk3OSAyMC4wNyA5Ljk3OSAxOS4zMzMzVjE3LjMzMzNINy45NzlWMTJDNy45NzkgMTEuMjYzMyA4LjU3NTY3IDEwLjY2NjcgOS4zMTIzNCAxMC42NjY3SDkuOTc5VjkuMzMzMzNDOS45NzkgOC41OTY2NyAxMC41NzU3IDggMTEuMzEyMyA4SDE3Ljk3OUMxOC43MTU3IDggMTkuMzEyMyA4LjU5NjY3IDE5LjMxMjMgOS4zMzMzM1YxMC42NjY3SDE5Ljk3OUMyMC43MTU3IDEwLjY2NjcgMjEuMzEyMyAxMS4yNjMzIDIxLjMxMjMgMTJWMTcuMzMzM1pNMTIuNjQ1NyAxNi42NjY3SDE2LjY0NTdWMThIMTIuNjQ1N1YxNi42NjY3Wk0xNy45NzkgMTAuNjY2N0gxMS4zMTIzVjkuMzMzMzNIMTcuOTc5VjEwLjY2NjdaTTE3Ljk3OSAxNS4zMzMzSDExLjMxMjNWMTkuMzMzM0gxNy45NzlWMTUuMzMzM1pNMTguOTc5IDEyQzE5LjUzMSAxMiAxOS45NzkgMTIuNDQ4IDE5Ljk3OSAxM0MxOS45NzkgMTMuNTUyIDE5LjUzMSAxNCAxOC45NzkgMTRDMTguNDI3IDE0IDE3Ljk3OSAxMy41NTIgMTcuOTc5IDEzQzE3Ljk3OSAxMi40NDggMTguNDI3IDEyIDE4Ljk3OSAxMloiIGZpbGw9IndoaXRlIi8+CjwvbWFzaz4KPGcgbWFzaz0idXJsKCNtYXNrMF84ODdfMTE2OTE0KSI+CjxyZWN0IHg9IjYuNjQ1NTEiIHk9IjYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iIzhDOEY5NCIvPgo8L2c+Cjwvc3ZnPgo="},35484:M=>{M.exports="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQ3IiBoZWlnaHQ9IjExNiIgdmlld0JveD0iMCAwIDE0NyAxMTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9IjMyLjAwMDUiIHk9IjAuNSIgd2lkdGg9Ijg0IiBoZWlnaHQ9IjExNSIgcng9IjQuNTkwNTMiIGZpbGw9IiNGN0VERjciLz4KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfZF84ODdfMTE2ODcxKSI+CjxyZWN0IHdpZHRoPSI4MS43Nzc4IiBoZWlnaHQ9IjkyLjQ0NDQiIHJ4PSI0LjMwMzYyIiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSA5MS43Nzc4IDExLjM0MzgpIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNjMuNjY1MyAyMi43MjI3SDM4LjgzMTlDMzcuMjYwMyAyMi43MjI3IDM1Ljk4ODEgMjMuOTYyNSAzNi4wMDA2IDI1LjQ2NzJWMzQuNjE1OEMzNi4wMDA2IDM2LjEzMjUgMzcuMjcyOCAzNy4zNjAzIDM4Ljg0NDQgMzcuMzYwM0g1MC42MDYzTDU1Ljk4MjEgNDAuMjQ5M0w1NC43NTk3IDM3LjM2MDNINjMuNjY1M0M2NS4yMzY5IDM3LjM2MDMgNjYuNTA5MSAzNi4xMzI1IDY2LjUwOTEgMzQuNjE1OFYyNS40NjcyQzY2LjUwOTEgMjMuOTUwNSA2NS4yMzY5IDIyLjcyMjcgNjMuNjY1MyAyMi43MjI3Wk0zOC4zMDg4IDI0Ljg0MTZDMzcuOTU5NSAyNC44NjU3IDM3LjY5NzYgMjQuOTg2MSAzNy41MjMgMjUuMjE0OEMzNy4zNDg0IDI1LjQzMTUgMzcuMjg2IDI1LjcwODMgMzcuMzIzNCAyNi4wMjEzQzM4LjA1OTMgMzAuNTM1NCAzOC43NDUzIDMzLjU4MDkgMzkuMzgxNCAzNS4xNTc4QzM5LjYzMDkgMzUuNzM1NiAzOS45MTc4IDM2LjAxMjUgNDAuMjU0NSAzNS45ODg0QzQwLjc3ODQgMzUuOTUyMyA0MS40MDIgMzUuMjU0MSA0Mi4xMzc5IDMzLjg5MzlDNDIuNTI0NiAzMy4xMjM1IDQzLjEyMzMgMzEuOTY3OSA0My45MzQgMzAuNDI3MUM0NC42MDc1IDMyLjcwMjIgNDUuNTMwNSAzNC40MTE1IDQ2LjY5MDUgMzUuNTU1MUM0Ny4wMTQ4IDM1Ljg4MDEgNDcuMzUxNSAzNi4wMjQ1IDQ3LjY3NTggMzYuMDAwNUM0Ny45NjI3IDM1Ljk3NjQgNDguMTg3MiAzNS44MzE5IDQ4LjMzNjkgMzUuNTY3MUM0OC40NjE2IDM1LjMzODQgNDguNTExNSAzNS4wNzM2IDQ4LjQ4NjUgMzQuNzcyNkM0OC40MTE3IDMzLjY3NzIgNDguNTI0IDMyLjE0ODQgNDguODM1OCAzMC4xODYzQzQ5LjE2MDEgMjguMTY0IDQ5LjU1OTIgMjYuNzA3NSA1MC4wNDU2IDI1Ljg0MDhDNTAuMTQ1NCAyNS42NjAyIDUwLjE4MjggMjUuNDc5NiA1MC4xNzA0IDI1LjI2M0M1MC4xNDU0IDI0Ljk4NjEgNTAuMDIwNyAyNC43NTc0IDQ5Ljc4MzcgMjQuNTc2OEM0OS41NDY3IDI0LjM5NjIgNDkuMjg0OCAyNC4zMTIgNDguOTk3OSAyNC4zMzYxQzQ4LjYzNjIgMjQuMzYwMSA0OC4zNjE4IDI0LjUyODcgNDguMTc0NyAyNC44NjU3QzQ3LjQwMTQgMjYuMjI2IDQ2Ljg1MjYgMjguNDI4OCA0Ni41MjgzIDMxLjQ4NjRDNDYuMDU0NCAzMC4zMzA4IDQ1LjY1NTIgMjguOTcwNSA0NS4zNDM0IDI3LjM2OTVDNDUuMjA2MiAyNi42NTkzIDQ0Ljg2OTQgMjYuMzIyMyA0NC4zMjA2IDI2LjM1ODRDNDMuOTQ2NSAyNi4zODI0IDQzLjYzNDYgMjYuNjIzMiA0My4zODUyIDI3LjA4MDZMNDAuNjUzNyAzMi4xMDAzQzQwLjIwNDYgMzAuMzU0OCAzOS43ODA2IDI4LjIyNDIgMzkuMzkzOSAyNS43MDgzQzM5LjMwNjYgMjUuMDgyNCAzOC45NDQ5IDI0Ljc5MzUgMzguMzA4OCAyNC44NDE2Wk02Mi4zNDM2IDI1LjcwODlDNjMuMjI5MSAyNS44ODk1IDYzLjg5MDIgMjYuMzQ2OSA2NC4zMzkyIDI3LjEwNTNDNjQuNzM4MyAyNy43NTUzIDY0LjkzNzkgMjguNTM3OCA2NC45Mzc5IDI5LjQ3NjdDNjQuOTM3OSAzMC43MTY2IDY0LjYxMzYgMzEuODQ4MSA2My45NjUgMzIuODgzM0M2My4yMTY3IDM0LjA4NzEgNjIuMjQzOCAzNC42ODkgNjEuMDM0IDM0LjY4OUM2MC44MjE5IDM0LjY4OSA2MC41OTc0IDM0LjY2NDkgNjAuMzYwNCAzNC42MTY4QzU5LjQ3NDkgMzQuNDM2MiA1OC44MTM4IDMzLjk3ODggNTguMzY0OCAzMy4yMjA0QzU3Ljk2NTcgMzIuNTU4MyA1Ny43NjYxIDMxLjc2MzkgNTcuNzY2MSAzMC44MzdDNTcuNzY2MSAyOS41OTcxIDU4LjA5MDQgMjguNDY1NiA1OC43MzkgMjcuNDQyNEM1OS40OTk4IDI2LjIzODYgNjAuNDcyNyAyNS42MzY3IDYxLjY3MDEgMjUuNjM2N0M2MS44ODIxIDI1LjYzNjcgNjIuMTA2NiAyNS42NjA4IDYyLjM0MzYgMjUuNzA4OVpNNjEuODE5NyAzMi4yMjEzQzYyLjI4MTIgMzEuODI0IDYyLjU5MyAzMS4yMzQyIDYyLjc2NzcgMzAuNDM5N0M2Mi44MTc1IDMwLjE2MjkgNjIuODU1IDI5Ljg2MTkgNjIuODU1IDI5LjU0ODlDNjIuODU1IDI5LjE5OTggNjIuNzgwMSAyOC44MjY3IDYyLjYzMDUgMjguNDUzNUM2Mi40NDM0IDI3Ljk4NCA2Mi4xOTM5IDI3LjczMTMgNjEuODk0NiAyNy42NzExQzYxLjQ0NTUgMjcuNTg2OCA2MS4wMDkgMjcuODI3NiA2MC41OTc0IDI4LjQxNzRDNjAuMjYwNiAyOC44NzQ4IDYwLjA0ODYgMjkuMzU2MyA1OS45MzY0IDI5Ljg0OTlDNTkuODc0IDMwLjEyNjcgNTkuODQ5IDMwLjQyNzcgNTkuODQ5IDMwLjcyODZDNTkuODQ5IDMxLjA3NzcgNTkuOTIzOSAzMS40NTA5IDYwLjA3MzYgMzEuODI0QzYwLjI2MDYgMzIuMjkzNSA2MC41MTAxIDMyLjU0NjMgNjAuODA5NCAzMi42MDY1QzYxLjEyMTMgMzIuNjY2NyA2MS40NTggMzIuNTM0MyA2MS44MTk3IDMyLjIyMTNaTTU2LjUxODkgMjcuMTA1M0M1Ni4wNjk5IDI2LjM0NjkgNTUuMzk2NCAyNS44ODk1IDU0LjUyMzMgMjUuNzA4OUM1NC4yODYzIDI1LjY2MDggNTQuMDYxOCAyNS42MzY3IDUzLjg0OTggMjUuNjM2N0M1Mi42NTI0IDI1LjYzNjcgNTEuNjc5NSAyNi4yMzg2IDUwLjkxODcgMjcuNDQyNEM1MC4yNzAxIDI4LjQ2NTYgNDkuOTQ1OCAyOS41OTcxIDQ5Ljk0NTggMzAuODM3QzQ5Ljk0NTggMzEuNzYzOSA1MC4xNDU0IDMyLjU1ODMgNTAuNTQ0NSAzMy4yMjA0QzUwLjk5MzUgMzMuOTc4OCA1MS42NTQ2IDM0LjQzNjIgNTIuNTQwMSAzNC42MTY4QzUyLjc3NzEgMzQuNjY0OSA1My4wMDE2IDM0LjY4OSA1My4yMTM2IDM0LjY4OUM1NC40MjM1IDM0LjY4OSA1NS4zOTY0IDM0LjA4NzEgNTYuMTQ0NyAzMi44ODMzQzU2Ljc5MzMgMzEuODQ4MSA1Ny4xMTc2IDMwLjcxNjYgNTcuMTE3NiAyOS40NzY3QzU3LjExNzYgMjguNTM3OCA1Ni45MTggMjcuNzU1MyA1Ni41MTg5IDI3LjEwNTNaTTU0Ljk0NzQgMzAuNDM5N0M1NC43NzI3IDMxLjIzNDIgNTQuNDYwOSAzMS44MjQgNTMuOTk5NCAzMi4yMjEzQzUzLjYzNzcgMzIuNTM0MyA1My4zMDEgMzIuNjY2NyA1Mi45ODkxIDMyLjYwNjVDNTIuNjg5OCAzMi41NDYzIDUyLjQ0MDMgMzIuMjkzNSA1Mi4yNTMzIDMxLjgyNEM1Mi4xMDM2IDMxLjQ1MDkgNTIuMDI4NyAzMS4wNzc3IDUyLjAyODcgMzAuNzI4NkM1Mi4wMjg3IDMwLjQyNzcgNTIuMDUzNyAzMC4xMjY3IDUyLjExNjEgMjkuODQ5OUM1Mi4yMjgzIDI5LjM1NjMgNTIuNDQwMyAyOC44NzQ4IDUyLjc3NzEgMjguNDE3NEM1My4xODg3IDI3LjgyNzYgNTMuNjI1MiAyNy41ODY4IDU0LjA3NDMgMjcuNjcxMUM1NC4zNzM2IDI3LjczMTMgNTQuNjIzMSAyNy45ODQgNTQuODEwMiAyOC40NTM1QzU0Ljk1OTggMjguODI2NyA1NS4wMzQ3IDI5LjE5OTggNTUuMDM0NyAyOS41NDg5QzU1LjAzNDcgMjkuODYxOSA1NS4wMDk3IDMwLjE2MjkgNTQuOTQ3NCAzMC40Mzk3WiIgZmlsbD0iIzdGNTRCMyIvPgo8cmVjdCB4PSIyMC4wMDA1IiB5PSI4NC41IiB3aWR0aD0iNjIiIGhlaWdodD0iMTEiIHJ4PSIxLjcyMTQ1IiBmaWxsPSIjNjc0Mzk5Ii8+CjxyZWN0IHg9IjIwLjMxMSIgeT0iNDcuNSIgd2lkdGg9IjI1LjYiIGhlaWdodD0iNC4yNjY2NyIgcng9IjIuMTMzMzMiIGZpbGw9IiNEQ0RDREUiLz4KPHJlY3QgeD0iMjAuMzExIiB5PSI1NC4zMjAzIiB3aWR0aD0iNjEuMTU1NiIgaGVpZ2h0PSI0LjI2NjY2IiByeD0iMi4xMzMzMyIgZmlsbD0iI0RDRENERSIvPgo8ZyBmaWx0ZXI9InVybCgjZmlsdGVyMV9kXzg4N18xMTY4NzEpIj4KPHJlY3QgeD0iNTYuMjIzMSIgeT0iNDAuODU1NSIgd2lkdGg9IjgxLjQyMjIiIGhlaWdodD0iMjguNDQ0NCIgcng9IjQuMzAzNjIiIGZpbGw9IndoaXRlIiBzaGFwZS1yZW5kZXJpbmc9ImNyaXNwRWRnZXMiLz4KPHJlY3QgeD0iODAuNjEwNCIgeT0iNDYuNTkzNiIgd2lkdGg9IjYuNTk4ODkiIGhlaWdodD0iMi4yOTUyNiIgcng9IjEuMTQ3NjMiIGZpbGw9IiNEQ0RDREUiLz4KPHJlY3QgeD0iODAuNjEwNCIgeT0iNTEuMTg0MSIgd2lkdGg9IjMzLjI4MTMiIGhlaWdodD0iMi4yOTUyNiIgcng9IjEuMTQ3NjMiIGZpbGw9IiNEQ0RDREUiLz4KPHJlY3QgeD0iODAuNjEwNCIgeT0iNTUuNzc0NyIgd2lkdGg9IjIyLjA5MTkiIGhlaWdodD0iMi4yOTUyNiIgcng9IjEuMTQ3NjMiIGZpbGw9IiNBRjdERDEiLz4KPGNpcmNsZSBjeD0iNjkuMDAxIiBjeT0iNTQuNSIgcj0iOSIgZmlsbD0iIzlBNjlDNyIvPgo8bWFzayBpZD0ibWFzazBfODg3XzExNjg3MSIgc3R5bGU9Im1hc2stdHlwZTphbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeD0iNjUiIHk9IjUwIiB3aWR0aD0iNyIgaGVpZ2h0PSI5Ij4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02NS4yOTI1IDUzLjkwNDJMNjcuNDAwOCA1Ni4wMTI1TDcxLjcwOTEgNTEuNzVMNzAuNzkyNSA1MC44MzM0TDY3LjQwMDggNTQuMjI1TDY2LjIwOTEgNTMuMDMzNEw2NS4yOTI1IDUzLjkwNDJaTTcxLjcwOTEgNTcuMjVINjUuMjkyNVY1OC4xNjY3SDcxLjcwOTFWNTcuMjVaIiBmaWxsPSJ3aGl0ZSIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfODg3XzExNjg3MSkiPgo8cmVjdCB4PSI2My4wMDEiIHk9IjQ5IiB3aWR0aD0iMTEiIGhlaWdodD0iMTEiIGZpbGw9IndoaXRlIi8+CjwvZz4KPC9nPgo8cmVjdCB4PSIyMC4wMDA1IiB5PSI2OC41IiB3aWR0aD0iMyIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSIyNC41MDA1IiB5PSI2OC41IiB3aWR0aD0iMSIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSIyNy4wMDA1IiB5PSI2OC41IiB3aWR0aD0iNSIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSIzMy41MDA1IiB5PSI2OC41IiB3aWR0aD0iMyIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSIzOC4wMDA1IiB5PSI2OC41IiB3aWR0aD0iMyIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI0Mi41MDA1IiB5PSI2OC41IiB3aWR0aD0iNCIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI0OC4wMDA1IiB5PSI2OC41IiB3aWR0aD0iMyIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI1Mi41MDA1IiB5PSI2OC41IiB3aWR0aD0iMyIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI1Ny4wMDA1IiB5PSI2OC41IiB3aWR0aD0iNSIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI2My41MDA1IiB5PSI2OC41IiB3aWR0aD0iMiIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI2Ny4wMDA1IiB5PSI2OC41IiB3aWR0aD0iMyIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI3MS41MDA1IiB5PSI2OC41IiB3aWR0aD0iMiIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI3NS4wMDA1IiB5PSI2OC41IiB3aWR0aD0iNCIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8cmVjdCB4PSI4MC41MDA1IiB5PSI2OC41IiB3aWR0aD0iMSIgaGVpZ2h0PSIxMSIgZmlsbD0iI0M3OTJFMCIvPgo8ZGVmcz4KPGZpbHRlciBpZD0iZmlsdGVyMF9kXzg4N18xMTY4NzEiIHg9IjAuODE4OTQyIiB5PSIyLjE2MjY5IiB3aWR0aD0iMTAwLjE0IiBoZWlnaHQ9IjExMC44MDciIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldC8+CjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjQuNTkwNTMiLz4KPGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0iZWZmZWN0MV9kcm9wU2hhZG93Xzg4N18xMTY4NzEiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3dfODg3XzExNjg3MSIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPGZpbHRlciBpZD0iZmlsdGVyMV9kXzg4N18xMTY4NzEiIHg9IjQ3LjA0MjEiIHk9IjM0LjU0MzUiIHdpZHRoPSI5OS43ODQ1IiBoZWlnaHQ9IjQ2LjgwNjYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldCBkeT0iMi44NjkwOCIvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSI0LjU5MDUzIi8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4xIDAiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3dfODg3XzExNjg3MSIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd184ODdfMTE2ODcxIiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8L2RlZnM+Cjwvc3ZnPgo="}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/9529.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/9529.js
deleted file mode 100644
index d23aa52a..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/chunks/9529.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunk_wcAdmin_webpackJsonp=globalThis.webpackChunk_wcAdmin_webpackJsonp||[]).push([[9529],{83619:(n,t,e)=>{e.d(t,{Z:()=>a});var r=e(69307),o=e(70444);const a=(0,r.createElement)(o.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(o.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"}))},82422:(n,t,e)=>{e.d(t,{qC:()=>o}),"function"==typeof Symbol&&Symbol.observable;var r=function(){return Math.random().toString(36).substring(7).split("").join(".")};function o(){for(var n=arguments.length,t=new Array(n),e=0;e{r.d(t,{Z:()=>w});var o=r(69307),a=r(65736),l=r(94333),c=r(69771),s=r(9818),i=r(92819),n=r(7862),m=r.n(n),u=r(86020),d=r(67221),p=r(81921),_=r(17844),f=r(65994),y=r(10431);function g(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||0===e.length)return null;const o=e.slice(0),a=o.pop();if(a.showFilters(t,r)){const e=(0,y.flattenFilters)(a.filters),r=t[a.param]||a.defaultValue||"all";return(0,i.find)(e,{value:r})}return g(o,t,r)}function h(e){return t=>(0,c.format)(e,t)}class b extends o.Component{shouldComponentUpdate(e){return e.isRequesting!==this.props.isRequesting||e.primaryData.isRequesting!==this.props.primaryData.isRequesting||e.secondaryData.isRequesting!==this.props.secondaryData.isRequesting||!(0,i.isEqual)(e.query,this.props.query)}getItemChartData(){const{primaryData:e,selectedChart:t}=this.props;return e.data.intervals.map((function(e){const r={};return e.subtotals.segments.forEach((function(e){if(e.segment_label){const o=r[e.segment_label]?e.segment_label+" (#"+e.segment_id+")":e.segment_label;r[e.segment_id]={label:o,value:e.subtotals[t.key]||0}}})),{date:(0,c.format)("Y-m-d\\TH:i:s",e.date_start),...r}}))}getTimeChartData(){const{query:e,primaryData:t,secondaryData:r,selectedChart:o,defaultDateRange:a}=this.props,l=(0,p.getIntervalForQuery)(e,a),{primary:s,secondary:i}=(0,p.getCurrentDates)(e,a);return t.data.intervals.map((function(t,a){const n=(0,p.getPreviousDate)(t.date_start,s.after,i.after,e.compare,l),m=r.data.intervals[a];return{date:(0,c.format)("Y-m-d\\TH:i:s",t.date_start),primary:{label:`${s.label} (${s.range})`,labelDate:t.date_start,value:t.subtotals[o.key]||0},secondary:{label:`${i.label} (${i.range})`,labelDate:n.format("YYYY-MM-DD HH:mm:ss"),value:m&&m.subtotals[o.key]||0}}}))}getTimeChartTotals(){const{primaryData:e,secondaryData:t,selectedChart:r}=this.props;return{primary:(0,i.get)(e,["data","totals",r.key],null),secondary:(0,i.get)(t,["data","totals",r.key],null)}}renderChart(e,t,r,l){const{emptySearchResults:c,filterParam:s,interactiveLegend:i,itemsLabel:n,legendPosition:m,path:_,query:f,selectedChart:y,showHeaderControls:g,primaryData:b,defaultDateRange:w}=this.props,v=(0,p.getIntervalForQuery)(f,w),C=(0,p.getAllowedIntervalsForQuery)(f,w),S=(0,p.getDateFormatsForInterval)(v,b.data.intervals.length,{type:"php"}),R=c?(0,a.__)("No data for the current search","woocommerce"):(0,a.__)("No data for the selected date range","woocommerce"),{formatAmount:x,getCurrencyConfig:D}=this.context;return(0,o.createElement)(u.Chart,{allowedIntervals:C,data:r,dateParser:"%Y-%m-%dT%H:%M:%S",emptyMessage:R,filterParam:s,interactiveLegend:i,interval:v,isRequesting:t,itemsLabel:n,legendPosition:m,legendTotals:l,mode:e,path:_,query:f,screenReaderFormat:h(S.screenReaderFormat),showHeaderControls:g,title:y.label,tooltipLabelFormat:h(S.tooltipLabelFormat),tooltipTitle:"time-comparison"===e&&y.label||null,tooltipValueFormat:(0,d.getTooltipValueFormat)(y.type,x),chartType:(0,p.getChartTypeForQuery)(f),valueType:y.type,xFormat:h(S.xFormat),x2Format:h(S.x2Format),currency:D()})}renderItemComparison(){const{isRequesting:e,primaryData:t}=this.props;if(t.isError)return(0,o.createElement)(f.Z,null);const r=e||t.isRequesting,a=this.getItemChartData();return this.renderChart("item-comparison",r,a)}renderTimeComparison(){const{isRequesting:e,primaryData:t,secondaryData:r}=this.props;if(!t||t.isError||r.isError)return(0,o.createElement)(f.Z,null);const a=e||t.isRequesting||r.isRequesting,l=this.getTimeChartData(),c=this.getTimeChartTotals();return this.renderChart("time-comparison",a,l,c)}render(){const{mode:e}=this.props;return"item-comparison"===e?this.renderItemComparison():this.renderTimeComparison()}}b.contextType=_.CurrencyContext,b.propTypes={filters:m().array,isRequesting:m().bool,itemsLabel:m().string,limitProperties:m().array,mode:m().string,path:m().string.isRequired,primaryData:m().object,query:m().object.isRequired,secondaryData:m().object,selectedChart:m().shape({key:m().string.isRequired,label:m().string.isRequired,order:m().oneOf(["asc","desc"]),orderby:m().string,type:m().oneOf(["average","number","currency"]).isRequired}).isRequired},b.defaultProps={isRequesting:!1,primaryData:{data:{intervals:[]},isError:!1,isRequesting:!1},secondaryData:{data:{intervals:[]},isError:!1,isRequesting:!1}};const w=(0,l.compose)((0,s.withSelect)(((e,t)=>{const{charts:r,endpoint:o,filters:a,isRequesting:l,limitProperties:c,query:s,advancedFilters:n}=t,m=c||[o],u=g(a,s),p=(0,i.get)(u,["settings","param"]),_=t.mode||function(e,t){if(e&&t){const r=(0,i.get)(e,["settings","param"]);if(!r||Object.keys(t).includes(r))return(0,i.get)(e,["chartMode"])}return null}(u,s)||"time-comparison",{woocommerce_default_date_range:f}=e(d.SETTINGS_STORE_NAME).getSetting("wc_admin","wcAdminSettings"),y=e(d.REPORTS_STORE_NAME),h={mode:_,filterParam:p,defaultDateRange:f};if(l)return h;const b=m.some((e=>s[e]&&s[e].length));if(s.search&&!b)return{...h,emptySearchResults:!0};const w=r&&r.map((e=>e.key)),v=(0,d.getReportChartData)({endpoint:o,dataType:"primary",query:s,selector:y,limitBy:m,filters:a,advancedFilters:n,defaultDateRange:f,fields:w});if("item-comparison"===_)return{...h,primaryData:v};const C=(0,d.getReportChartData)({endpoint:o,dataType:"secondary",query:s,selector:y,limitBy:m,filters:a,advancedFilters:n,defaultDateRange:f,fields:w});return{...h,primaryData:v,secondaryData:C}})))(b)},67362:(e,t,r)=>{r.d(t,{O3:()=>s,be:()=>n,u8:()=>i});var o=r(65736),a=r(92694),l=r(36309),c=r(73463);const s=(0,a.applyFilters)("woocommerce_admin_orders_report_charts",[{key:"orders_count",label:(0,o.__)("Orders","woocommerce"),type:"number"},{key:"net_revenue",label:(0,o.__)("Net sales","woocommerce"),order:"desc",orderby:"net_total",type:"currency"},{key:"avg_order_value",label:(0,o.__)("Average order value","woocommerce"),type:"currency"},{key:"avg_items_per_order",label:(0,o.__)("Average items per order","woocommerce"),order:"desc",orderby:"num_items_sold",type:"average"}]),i=(0,a.applyFilters)("woocommerce_admin_orders_report_filters",[{label:(0,o.__)("Show","woocommerce"),staticParams:["chartType","paged","per_page"],param:"filter",showFilters:()=>!0,filters:[{label:(0,o.__)("All orders","woocommerce"),value:"all"},{label:(0,o.__)("Advanced filters","woocommerce"),value:"advanced"}]}]),n=(0,a.applyFilters)("woocommerce_admin_orders_report_advanced_filters",{title:(0,o._x)("Orders match filters","A sentence describing filters for Orders. See screen shot for context: https://cloudup.com/cSsUY9VeCVJ","woocommerce"),filters:{status:{labels:{add:(0,o.__)("Order Status","woocommerce"),remove:(0,o.__)("Remove order status filter","woocommerce"),rule:(0,o.__)("Select an order status filter match","woocommerce"),title:(0,o.__)("Order Status ","woocommerce"),filter:(0,o.__)("Select an order status","woocommerce")},rules:[{value:"is",label:(0,o._x)("Is","order status","woocommerce")},{value:"is_not",label:(0,o._x)("Is Not","order status","woocommerce")}],input:{component:"SelectControl",options:Object.keys(c.rq).map((e=>({value:e,label:c.rq[e]})))}},product:{labels:{add:(0,o.__)("Products","woocommerce"),placeholder:(0,o.__)("Search products","woocommerce"),remove:(0,o.__)("Remove products filter","woocommerce"),rule:(0,o.__)("Select a product filter match","woocommerce"),title:(0,o.__)("Product ","woocommerce"),filter:(0,o.__)("Select products","woocommerce")},rules:[{value:"includes",label:(0,o._x)("Includes","products","woocommerce")},{value:"excludes",label:(0,o._x)("Excludes","products","woocommerce")}],input:{component:"Search",type:"products",getLabels:l.oC}},variation:{labels:{add:(0,o.__)("Variations","woocommerce"),placeholder:(0,o.__)("Search variations","woocommerce"),remove:(0,o.__)("Remove variations filter","woocommerce"),rule:(0,o.__)("Select a variation filter match","woocommerce"),title:(0,o.__)("Variation ","woocommerce"),filter:(0,o.__)("Select variation","woocommerce")},rules:[{value:"includes",label:(0,o._x)("Includes","variations","woocommerce")},{value:"excludes",label:(0,o._x)("Excludes","variations","woocommerce")}],input:{component:"Search",type:"variations",getLabels:l.uC}},coupon:{labels:{add:(0,o.__)("Coupon Codes","woocommerce"),placeholder:(0,o.__)("Search coupons","woocommerce"),remove:(0,o.__)("Remove coupon filter","woocommerce"),rule:(0,o.__)("Select a coupon filter match","woocommerce"),title:(0,o.__)("Coupon code ","woocommerce"),filter:(0,o.__)("Select coupon codes","woocommerce")},rules:[{value:"includes",label:(0,o._x)("Includes","coupon code","woocommerce")},{value:"excludes",label:(0,o._x)("Excludes","coupon code","woocommerce")}],input:{component:"Search",type:"coupons",getLabels:l.hQ}},customer_type:{labels:{add:(0,o.__)("Customer type","woocommerce"),remove:(0,o.__)("Remove customer filter","woocommerce"),rule:(0,o.__)("Select a customer filter match","woocommerce"),title:(0,o.__)("Customer is ","woocommerce"),filter:(0,o.__)("Select a customer type","woocommerce")},input:{component:"SelectControl",options:[{value:"new",label:(0,o.__)("New","woocommerce")},{value:"returning",label:(0,o.__)("Returning","woocommerce")}],defaultOption:"new"}},refunds:{labels:{add:(0,o.__)("Refunds","woocommerce"),remove:(0,o.__)("Remove refunds filter","woocommerce"),rule:(0,o.__)("Select a refund filter match","woocommerce"),title:(0,o.__)("Refunds ","woocommerce"),filter:(0,o.__)("Select a refund type","woocommerce")},input:{component:"SelectControl",options:[{value:"all",label:(0,o.__)("All","woocommerce")},{value:"partial",label:(0,o.__)("Partially refunded","woocommerce")},{value:"full",label:(0,o.__)("Fully refunded","woocommerce")},{value:"none",label:(0,o.__)("None","woocommerce")}],defaultOption:"all"}},tax_rate:{labels:{add:(0,o.__)("Tax Rates","woocommerce"),placeholder:(0,o.__)("Search tax rates","woocommerce"),remove:(0,o.__)("Remove tax rate filter","woocommerce"),rule:(0,o.__)("Select a tax rate filter match","woocommerce"),title:(0,o.__)("Tax Rate ","woocommerce"),filter:(0,o.__)("Select tax rates","woocommerce")},rules:[{value:"includes",label:(0,o._x)("Includes","tax rate","woocommerce")},{value:"excludes",label:(0,o._x)("Excludes","tax rate","woocommerce")}],input:{component:"Search",type:"taxes",getLabels:l.FI}},attribute:{allowMultiple:!0,labels:{add:(0,o.__)("Attribute","woocommerce"),placeholder:(0,o.__)("Search attributes","woocommerce"),remove:(0,o.__)("Remove attribute filter","woocommerce"),rule:(0,o.__)("Select a product attribute filter match","woocommerce"),title:(0,o.__)("Attribute ","woocommerce"),filter:(0,o.__)("Select attributes","woocommerce")},rules:[{value:"is",label:(0,o._x)("Is","product attribute","woocommerce")},{value:"is_not",label:(0,o._x)("Is Not","product attribute","woocommerce")}],input:{component:"ProductAttribute"}}}})},60017:(e,t,r)=>{r.d(t,{I:()=>a});var o=r(65736);function a(e){return[e.country,e.state,e.name||(0,o.__)("TAX","woocommerce"),e.priority].map((e=>e.toString().toUpperCase().trim())).filter(Boolean).join("-")}},36309:(e,t,r)=>{r.d(t,{FI:()=>y,V1:()=>g,YC:()=>d,hQ:()=>p,jk:()=>_,oC:()=>f,qc:()=>u,uC:()=>h});var o=r(96483),a=r(86989),l=r.n(a),c=r(92819),s=r(10431),i=r(67221),n=r(60017),m=r(73463);function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.identity;return function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",a=arguments.length>1?arguments[1]:void 0;const c="function"==typeof e?e(a):e,i=(0,s.getIdsFromQuery)(r);if(i.length<1)return Promise.resolve([]);const n={include:i.join(","),per_page:i.length};return l()({path:(0,o.addQueryArgs)(c,n)}).then((e=>e.map(t)))}}u(i.NAMESPACE+"/products/attributes",(e=>({key:e.id,label:e.name})));const d=u(i.NAMESPACE+"/products/categories",(e=>({key:e.id,label:e.name}))),p=u(i.NAMESPACE+"/coupons",(e=>({key:e.id,label:e.code}))),_=u(i.NAMESPACE+"/customers",(e=>({key:e.id,label:e.name}))),f=u(i.NAMESPACE+"/products",(e=>({key:e.id,label:e.name}))),y=u(i.NAMESPACE+"/taxes",(e=>({key:e.id,label:(0,n.I)(e)})));function g(e){let{attributes:t,name:r}=e;const o=(0,m.O3)("variationTitleAttributesSeparator"," - ");if(r&&r.indexOf(o)>-1)return r;const a=(t||[]).map((e=>{let{option:t}=e;return t})).join(", ");return a?r+o+a:r}const h=u((e=>{let{products:t}=e;return t?i.NAMESPACE+`/products/${t}/variations`:i.NAMESPACE+"/variations"}),(e=>({key:e.id,label:g(e)})))}}]);
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/assets/client/admin/product-editor/blocks/generic/taxonomy/types.js b/wp/wp-content/plugins/woocommerce/assets/client/admin/product-editor/blocks/generic/taxonomy/types.js
deleted file mode 100644
index f5d60537..00000000
--- a/wp/wp-content/plugins/woocommerce/assets/client/admin/product-editor/blocks/generic/taxonomy/types.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0});
\ No newline at end of file
diff --git a/wp/wp-content/plugins/woocommerce/i18n/languages/woocommerce.pot b/wp/wp-content/plugins/woocommerce/i18n/languages/woocommerce.pot
index 4ed5b9db..d0001ff1 100644
--- a/wp/wp-content/plugins/woocommerce/i18n/languages/woocommerce.pot
+++ b/wp/wp-content/plugins/woocommerce/i18n/languages/woocommerce.pot
@@ -2,14 +2,14 @@
# This file is distributed under the same license as the WooCommerce plugin.
msgid ""
msgstr ""
-"Project-Id-Version: WooCommerce 8.5.1\n"
+"Project-Id-Version: WooCommerce 8.5.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"POT-Creation-Date: 2024-01-15T12:08:50+00:00\n"
+"POT-Creation-Date: 2024-01-25T16:17:41+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.9.0\n"
"X-Domain: woocommerce\n"
@@ -34965,7 +34965,7 @@ msgstr ""
msgid "Could not register file \"%s\" as a block pattern (\"Title\" field missing)"
msgstr ""
-#: src/Blocks/BlockPatterns.php:343
+#: src/Blocks/BlockPatterns.php:346
#: src/StoreApi/Routes/V1/AI/Middleware.php:38
#: src/StoreApi/Routes/V1/AI/Products.php:85
msgid "AI content generation is not allowed on this store. Update your store settings if you wish to enable this feature."
diff --git a/wp/wp-content/plugins/woocommerce/includes/class-woocommerce.php b/wp/wp-content/plugins/woocommerce/includes/class-woocommerce.php
index 8632cf25..fe4193e2 100644
--- a/wp/wp-content/plugins/woocommerce/includes/class-woocommerce.php
+++ b/wp/wp-content/plugins/woocommerce/includes/class-woocommerce.php
@@ -36,7 +36,7 @@ final class WooCommerce {
*
* @var string
*/
- public $version = '8.5.1';
+ public $version = '8.5.2';
/**
* WooCommerce Schema version.
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/LICENSE b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/LICENSE
deleted file mode 100644
index f288702d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/LICENSE
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
- .
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_breakpoints.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_breakpoints.scss
deleted file mode 100644
index 2e091794..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_breakpoints.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-/* stylelint-disable block-closing-brace-newline-after */
-
-// Breakpoints
-// Forked from https://github.com/Automattic/wp-calypso/blob/46ae24d8800fb85da6acf057a640e60dac988a38/assets/stylesheets/shared/mixins/_breakpoints.scss
-
-// Think very carefully before adding a new breakpoint.
-// The list below is based on wp-admin's main breakpoints
-// See https://github.com/WordPress/gutenberg/tree/master/packages/viewport#usage
-$breakpoints: 480px, 600px, 782px, 960px, 1280px, 1440px;
-
-// @todo refactor breakpoints so they use the mixins from Gutenberg
-// https://github.com/WordPress/gutenberg/blob/master/packages/base-styles/_mixins.scss
-@mixin breakpoint($sizes...) {
- @each $size in $sizes {
- @if type-of($size) == string {
- $approved-value: 0;
- @each $breakpoint in $breakpoints {
- $and-larger: ">" + $breakpoint;
- $and-smaller: "<" + $breakpoint;
-
- @if $size == $and-smaller {
- $approved-value: 1;
- @media (max-width: $breakpoint) {
- @content;
- }
- } @else {
- @if $size == $and-larger {
- $approved-value: 2;
- @media (min-width: $breakpoint + 1) {
- @content;
- }
- } @else {
- @each $breakpoint-end in $breakpoints {
- $range: $breakpoint + "-" + $breakpoint-end;
- @if $size == $range {
- $approved-value: 3;
- @media (min-width: $breakpoint + 1) and (max-width: $breakpoint-end) {
- @content;
- }
- }
- }
- }
- }
- }
- @if $approved-value == 0 {
- $sizes: "";
- @each $breakpoint in $breakpoints {
- $sizes: $sizes + " " + $breakpoint;
- }
- @warn "ERROR in breakpoint(#{ $size }) : You can only use these sizes[ #{$sizes} ] using the following syntax [ <#{ nth($breakpoints, 1) } >#{ nth($breakpoints, 1) } #{ nth($breakpoints, 1) }-#{ nth($breakpoints, 2) } ]";
- }
- } @else {
- $sizes: "";
- @each $breakpoint in $breakpoints {
- $sizes: $sizes + " " + $breakpoint;
- }
- @error "ERROR in breakpoint(#{ $size }) : Please wrap the breakpoint $size in parenthesis. You can use these sizes[ #{$sizes} ] using the following syntax [ <#{ nth($breakpoints, 1) } >#{ nth($breakpoints, 1) } #{ nth($breakpoints, 1) }-#{ nth($breakpoints, 2) } ]";
- }
- }
-}
-
-/* stylelint-enable */
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_colors.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_colors.scss
deleted file mode 100644
index e2dcdb79..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_colors.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-@import "node_modules/@wordpress/base-styles/colors";
-@import "node_modules/@automattic/color-studio/dist/color-variables";
-
-// Bright colors
-$discount-color: $alert-green;
-
-$input-border-gray: #50575e;
-$input-border-dark: rgba(255, 255, 255, 0.4);
-$controls-border-dark: rgba(255, 255, 255, 0.6);
-$input-text-active: #2b2d2f;
-$input-placeholder-dark: rgba(255, 255, 255, 0.6);
-$input-text-dark: #fff;
-$input-background-dark: rgba(0, 0, 0, 0.1);
-$select-dropdown-dark: #1e1e1e;
-$select-dropdown-light: #fff;
-$select-item-dark: rgba(0, 0, 0, 0.4);
-$image-placeholder-border-color: #f2f2f2;
-
-// Universal colors for use on the frontend, currently being applied to checkout blocks.
-$universal-border: rgba(17, 17, 17, 0.3); // Used for form step borders.
-$universal-border-light: rgba(17, 17, 17, 0.115); // e7e7e7 on white.
-$universal-body-low-emphasis: rgba(17, 17, 17, 0.5); // Used for low emphasis text such as input labels.
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_mixins.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_mixins.scss
deleted file mode 100644
index 7fef7d98..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_mixins.scss
+++ /dev/null
@@ -1,311 +0,0 @@
-$fontSizes: (
- "smaller": 0.75,
- "small": 0.875,
- "regular": 1,
- "large": 1.25,
- "larger": 2,
-);
-
-// Maps a named font-size to its predefined size. Units default to em, but can
-// be changed using the multiplier parameter.
-@mixin font-size($sizeName, $multiplier: 1em) {
- font-size: map.get($fontSizes, $sizeName) * $multiplier;
-}
-
-@keyframes spinner__animation {
- 0% {
- animation-timing-function: cubic-bezier(0.5856, 0.0703, 0.4143, 0.9297);
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(360deg);
- }
-}
-
-@keyframes loading__animation {
- 100% {
- transform: translateX(100%);
- }
-}
-
-// Adds animation to placeholder section
-@mixin placeholder($include-border-radius: true) {
- outline: 0 !important;
- border: 0 !important;
- background-color: currentColor !important;
- color: currentColor !important;
- width: 100%;
- @if $include-border-radius == true {
- border-radius: 0.25rem;
- }
- display: block;
- line-height: 1;
- position: relative !important;
- overflow: hidden !important;
- max-width: 100% !important;
- pointer-events: none;
- box-shadow: none;
- z-index: 1; /* Necessary for overflow: hidden to work correctly in Safari */
- opacity: 0.15;
-
- // Forces direct descendants to keep layout but lose visibility.
- > * {
- visibility: hidden;
- }
-
- &::after {
- content: " ";
- display: block;
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- height: 100%;
- background-repeat: no-repeat;
- background-image: linear-gradient(90deg, currentColor, #f5f5f54d, currentColor);
- transform: translateX(-100%);
- animation: loading__animation 1.5s ease-in-out infinite;
- }
-
- @media screen and (prefers-reduced-motion: reduce) {
- animation: none;
- }
-}
-
-@mixin force-content() {
- &::before {
- content: "\00a0";
- }
-}
-
-// Hide an element from sighted users, but available to screen reader users.
-@mixin visually-hidden() {
- border: 0;
- clip: rect(1px, 1px, 1px, 1px);
- clip-path: inset(50%);
- height: 1px;
- width: 1px;
- margin: -1px;
- overflow: hidden;
- /* Many screen reader and browser combinations announce broken words as they would appear visually. */
- overflow-wrap: normal !important;
- word-wrap: normal !important;
- padding: 0;
- position: absolute !important;
-}
-
-@mixin visually-hidden-focus-reveal() {
- background-color: #fff;
- border-radius: 3px;
- box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
- clip: auto !important;
- clip-path: none;
- color: $input-text-active;
- display: block;
- font-size: 0.875rem;
- font-weight: 700;
- height: auto;
- left: 5px;
- line-height: normal;
- padding: 15px 23px 14px;
- text-decoration: none;
- top: 5px;
- width: auto;
- z-index: 100000;
-}
-
-@mixin reset-box() {
- border: 0;
- border-radius: 0;
- margin: 0;
- padding: 0;
- vertical-align: baseline;
-}
-
-@mixin reset-color() {
- color: inherit;
-}
-
-@mixin reset-typography() {
- font-family: inherit;
- font-size: inherit;
- font-style: inherit;
- font-weight: inherit;
- letter-spacing: inherit;
- line-height: inherit;
- text-decoration: inherit;
- text-transform: inherit;
-}
-
-// Reset , , etc. styles as if they were text. Useful for elements that must be headings for a11y but don't need those styles.
-@mixin text-heading() {
- @include reset-box();
- @include reset-color();
- @include reset-typography();
- box-shadow: none;
- display: inline;
-
- background: transparent;
-}
-
-// Reset style as if it was text. Useful for elements that must be `` for a11y but don't need those styles.
-@mixin text-button() {
- @include reset-box();
- @include reset-color();
- @include reset-typography();
- background: transparent;
- box-shadow: none;
- display: inline;
- text-shadow: none;
-
- &:hover,
- &:focus,
- &:active {
- background: transparent;
- }
-}
-
-// Reset style so we can use link style for action buttons.
-@mixin link-button() {
- @include text-button();
- text-decoration: underline;
-}
-
-@mixin hover-effect() {
- &:hover {
- text-decoration: none;
- color: inherit;
- cursor: pointer;
- }
-}
-
-// Reset style so we can use link style for action buttons in filter blocks
-@mixin filter-link-button() {
- @include link-button();
- @include hover-effect();
- @include font-size(small);
- text-decoration: underline;
- font-weight: normal;
- color: inherit;
-}
-
-// Makes sure long words are broken if they overflow the container.
-@mixin wrap-break-word() {
- // This is the current standard, works in most browsers.
- overflow-wrap: anywhere;
- // Safari supports word-break.
- word-break: break-word;
- // IE11 doesn't support overflow-wrap neither word-break: break-word, so we fallback to -ms-work-break: break-all.
- -ms-word-break: break-all;
-}
-
-// Add support for content alignment classes
-@mixin with-alignment() {
- // Apply max-width to floated items that have no intrinsic width
- &.alignleft,
- &.alignright {
- max-width: $content-width * 0.5;
- width: 100%;
- }
-
- // Using flexbox without an assigned height property breaks vertical center alignment in IE11.
- // Appending an empty ::after element tricks IE11 into giving the cover image an implicit height, which sidesteps this issue.
- &::after {
- display: block;
- content: "";
- font-size: 0;
- min-height: inherit;
-
- // IE doesn't support flex so omit that.
- @supports (position: sticky) {
- content: none;
- }
- }
-
- // Aligned cover blocks should not use our global alignment rules
- &.aligncenter,
- &.alignleft,
- &.alignright {
- display: flex;
- }
-}
-
-// Shows an semi-transparent overlay
-@mixin with-background-dim($opacity: 0.5) {
- &.has-background-dim {
- .background-dim__overlay::before {
- content: "";
- position: absolute;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
- background: inherit;
- border-radius: inherit;
- opacity: $opacity;
- z-index: 1;
- }
- }
-
- @for $i from 1 through 10 {
- &.has-background-dim-#{ $i * 10 } .background-dim__overlay::before {
- opacity: $i * 0.1;
- }
- }
-}
-
-// Shows a border with the current color and a custom opacity. That can't be achieved
-// with normal border because `currentColor` doesn't allow tweaking the opacity, and
-// setting the opacity of the entire element would change the children's opacity too.
-@mixin with-translucent-border($border-width: 1px, $opacity: 0.3) {
- position: relative;
-
- &::after {
- border-style: solid;
- border-width: $border-width;
- bottom: 0;
- content: "";
- display: block;
- left: 0;
- opacity: $opacity;
- pointer-events: none;
- position: absolute;
- right: 0;
- top: 0;
- }
-}
-
-// Wraps the content with a media query specially targeting IE11.
-@mixin ie11() {
- @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
- @content;
- }
-}
-
-// Positions an element absolutely and stretches it over the container
-@mixin absolute-stretch() {
- margin: 0;
- padding: 0;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- width: 100%;
- height: 100%;
-}
-
-// Converts a px unit to em.
-@function em($size, $base: 16px) {
- @return math.div($size, $base) * 1em;
-}
-
-// Encodes hex colors so they can be used in URL content.
-@function encode-color($color) {
- @if type-of($color) != "color" or string.index(#{$color}, "#") != 1 {
- @return $color;
- }
-
- $hex: string.slice(color.ie-hex-str($color), 4);
- @return "%23" + unquote("#{$hex}");
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_variables.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_variables.scss
deleted file mode 100644
index e9cfecfb..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/abstracts/_variables.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-@import "node_modules/@wordpress/base-styles/variables";
-
-// grid-unit from base-styles is 8px.
-$gap-largest: 6 * $grid-unit; // 48px
-$gap-larger: 4.5 * $grid-unit; // 36px
-$gap-large: 3 * $grid-unit; // 24px
-$gap: 2 * $grid-unit; // 16px
-$gap-small: 1.5 * $grid-unit; // 12px
-$gap-smaller: 1 * $grid-unit; // 8px
-$gap-smallest: 0.5 * $grid-unit; // 4px
-
-// Standard border radius for forms.
-$universal-border-radius: 4px;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/editor.scss
deleted file mode 100644
index b721f908..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/editor.scss
+++ /dev/null
@@ -1,62 +0,0 @@
-// Remove the list styling, which is added back by core GB styles.
-.editor-styles-wrapper {
- .wc-block-grid {
- .wc-block-grid__products {
- list-style: none;
- margin: 0 (-$gap * 0.5) $gap;
- padding: 0;
-
- .wc-block-grid__product {
- margin: 0 0 $gap-large 0;
-
- .wc-block-grid__product-onsale {
- position: absolute;
- }
- }
- }
-
- &.components-placeholder {
- padding: 2em 1em;
- }
-
- &.is-loading,
- &.is-not-found {
- display: block;
- }
- }
-}
-
-// Style inline notices in the inspector.
-.components-base-control {
- + .wc-block-base-control-notice {
- margin: -$gap 0 $gap;
- }
-
- + .wc-block-base-control-notice:last-child {
- margin: -$gap 0 $gap-small;
- }
-}
-
-svg.wc-block-editor-components-block-icon--sparkles path {
- fill: currentColor;
-}
-
-.block-editor-list-view-leaf.is-selected {
- .block-editor-list-view-block-contents {
- svg.wc-block-editor-components-block-icon {
- color: currentColor;
- }
- }
-}
-
-.theme-twentytwenty {
- .wp-block {
- .wc-block-grid__product-title,
- .wc-block-active-filters__title,
- .wc-block-attribute-filter__title,
- .wc-block-price-filter__title,
- .wc-block-stock-filter__title {
- @include font-size(regular);
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/style.scss
deleted file mode 100644
index 0c2e51a2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/css/style.scss
+++ /dev/null
@@ -1,351 +0,0 @@
-// These styles are for the server side rendered product grid blocks.
-.wc-block-grid__products .wc-block-grid__product-image {
- text-decoration: none;
- display: block;
- position: relative;
-
- a {
- text-decoration: none;
- border: 0;
- outline: 0;
- box-shadow: none;
- }
-
- img {
- height: auto;
- width: auto;
- max-width: 100%;
-
- &[hidden] {
- display: none;
- }
-
- &[alt=""] {
- border: 1px solid $image-placeholder-border-color;
- }
- }
-}
-.edit-post-visual-editor .editor-block-list__block .wc-block-grid__product-title,
-.editor-styles-wrapper .wc-block-grid__product-title,
-.wc-block-grid__product-title {
- font-family: inherit;
- line-height: 1.2;
- font-weight: 700;
- padding: 0;
- color: inherit;
- font-size: inherit;
- display: block;
-}
-.wc-block-grid__product-price {
- display: block;
-
- .wc-block-grid__product-price__regular {
- margin-right: 0.5em;
- }
-}
-.wc-block-grid__product-add-to-cart.wp-block-button {
- word-break: break-word;
- white-space: normal;
- .wp-block-button__link {
- word-break: break-word;
- white-space: normal;
- margin-right: auto !important;
- margin-left: auto !important;
- display: inline-flex;
- justify-content: center;
- text-align: center;
- // Set button font size so it inherits from parent.
- font-size: 1em;
-
- &.loading {
- opacity: 0.25;
- }
-
- &.added::after {
- font-family: WooCommerce; /* stylelint-disable-line */
- content: "\e017";
- margin-left: 0.5em;
- display: inline-block;
- width: auto;
- height: auto;
- }
-
- &.loading::after {
- font-family: WooCommerce; /* stylelint-disable-line */
- content: "\e031";
- animation: spin 2s linear infinite;
- margin-left: 0.5em;
- display: inline-block;
- width: auto;
- height: auto;
- }
- }
-}
-// Remove button sugar if unlikely to fit.
-.has-5-columns:not(.alignfull),
-.has-6-columns,
-.has-7-columns,
-.has-8-columns,
-.has-9-columns {
- .wc-block-grid__product-add-to-cart.wp-block-button .wp-block-button__link::after {
- content: "";
- margin: 0;
- }
-}
-
-.wc-block-grid__product-rating {
- display: block;
-
- .wc-block-grid__product-rating__stars,
- .star-rating {
- overflow: hidden;
- position: relative;
- width: 5.3em;
- height: 1.618em;
- line-height: 1.618;
- font-size: 1em;
- /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */
- font-family: star;
- font-weight: 400;
- margin: 0 auto;
- text-align: left;
-
- &::before {
- content: "\53\53\53\53\53";
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- opacity: 0.5;
- white-space: nowrap;
- }
- span {
- overflow: hidden;
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- padding-top: 1.5em;
- }
- span::before {
- content: "\53\53\53\53\53";
- color: inherit;
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- white-space: nowrap;
- }
- }
-}
-.wc-block-grid__product-image .wc-block-grid__product-onsale,
-.wc-block-grid .wc-block-grid__product-onsale {
- @include font-size(small);
- padding: em($gap-smallest) em($gap-small);
- display: inline-block;
- width: auto;
- border: 1px solid #43454b;
- border-radius: $universal-border-radius;
- color: #43454b;
- background: #fff;
- text-align: center;
- text-transform: uppercase;
- font-weight: 600;
- z-index: 9;
- position: absolute;
- top: 4px;
- right: 4px;
- left: auto;
-}
-
-// Element spacing.
-.wc-block-grid__product {
- // Prevent link and image taking the full width unnecessarily, which might cause: https://github.com/woocommerce/woocommerce-blocks/issues/11438
- .wc-block-grid__product-link,
- .wc-block-grid__product-image {
- display: inline-block;
- position: relative;
- }
-
- // Not operator necessary for avoid this problem: https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/5925/files#r814043454
- .wc-block-grid__product-image:not(.wc-block-components-product-image),
- .wc-block-grid__product-title {
- margin: 0 0 $gap-small;
- }
- // If centered when toggling alignment on, use auto margins to prevent flexbox stretching it.
- .wc-block-grid__product-price,
- .wc-block-grid__product-rating,
- .wc-block-grid__product-add-to-cart,
- .wc-block-grid__product-onsale {
- margin: 0 auto $gap-small;
- }
-}
-
-.theme-twentysixteen {
- .wc-block-grid {
- // Prevent white theme styles.
- .price ins {
- color: #77a464;
- }
- }
-}
-
-.theme-twentynineteen {
- .wc-block-grid__product {
- font-size: 0.88889em;
- }
- // Change the title font to match headings.
- .wc-block-grid__product-title,
- .wc-block-grid__product-onsale,
- .wc-block-components-product-title,
- .wc-block-components-product-sale-badge {
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
- }
- .wc-block-grid__product-title::before {
- display: none;
- }
- .wc-block-grid__product-onsale,
- .wc-block-components-product-sale-badge {
- line-height: 1;
- }
- .editor-styles-wrapper .wp-block-button .wp-block-button__link:not(.has-text-color) {
- color: #fff;
- }
-}
-
-.theme-twentytwenty {
- $twentytwenty-headings: -apple-system, blinkmacsystemfont, "Helvetica Neue", helvetica, sans-serif;
- $twentytwenty-highlights-color: #cd2653;
-
- .wc-block-grid__product-link {
- color: #000;
- }
-
- .wc-block-grid__product-title,
- .wc-block-components-product-title {
- font-family: $twentytwenty-headings;
- color: $twentytwenty-highlights-color;
- @include font-size(regular);
- }
-
- .wp-block-columns .wc-block-components-product-title {
- margin-top: 0;
- }
-
- .wc-block-grid__product-price,
- .wc-block-components-product-price {
- &__value,
- .woocommerce-Price-amount {
- font-family: $twentytwenty-headings;
- font-size: 0.9em;
- }
-
- del {
- opacity: 0.5;
- }
-
- ins {
- text-decoration: none;
- }
- }
-
- .wc-block-grid__product-rating,
- .star-rating {
- font-size: 0.7em;
-
- .wc-block-grid__product-rating__stars,
- .wc-block-components-product-rating__stars {
- line-height: 1;
- }
- }
-
- .wc-block-grid__product-add-to-cart > .wp-block-button__link,
- .wc-block-components-product-button > .wp-block-button__link {
- font-family: $twentytwenty-headings;
- }
-
- .wc-block-grid__products .wc-block-grid__product-onsale,
- .wc-block-components-product-sale-badge {
- background: $twentytwenty-highlights-color;
- color: #fff;
- font-family: $twentytwenty-headings;
- font-weight: 700;
- letter-spacing: -0.02em;
- line-height: 1.2;
- text-transform: uppercase;
- }
-
- // Override style from WC Core that set its position to absolute.
- // These rulesets can be removed once https://github.com/woocommerce/woocommerce/pull/26516 is released.
- .wc-block-grid__products .wc-block-components-product-sale-badge {
- position: static;
- }
- .wc-block-grid__products .wc-block-grid__product-image .wc-block-components-product-sale-badge {
- position: absolute;
- }
-
- // These styles are not applied to the All Products atomic block, so it can be positioned normally.
- .wc-block-grid__products .wc-block-grid__product-onsale:not(.wc-block-components-product-sale-badge) {
- position: absolute;
- right: 4px;
- top: 4px;
- z-index: 1;
- }
-
- .wc-block-active-filters__title,
- .wc-block-attribute-filter__title,
- .wc-block-price-filter__title,
- .wc-block-stock-filter__title {
- @include font-size(regular);
- }
-
- .wc-block-active-filters .wc-block-active-filters__clear-all {
- @include font-size(smaller);
- }
-
- .wc-block-grid__product-add-to-cart.wp-block-button .wp-block-button__link {
- @include font-size(smaller);
- }
-
- @media only screen and (min-width: 768px) {
- .wc-block-grid__products .wc-block-grid__product-onsale {
- @include font-size(small);
- padding: em($gap-smaller);
- }
- }
-
- @media only screen and (min-width: 1168px) {
- .wc-block-grid__products .wc-block-grid__product-onsale {
- @include font-size(small);
- padding: em($gap-smaller);
- }
- }
-}
-
-.theme-twentytwentytwo {
- .wc-block-grid__product-add-to-cart {
- .added_to_cart {
- margin-top: $gap-small;
- display: block;
- }
- }
-
- .wc-block-components-product-price,
- .wc-block-grid__product-price {
- ins {
- text-decoration: none;
- }
- }
-}
-
-// Default screen-reader styles. Included as a fallback for themes that don't have support.
-.screen-reader-text {
- @include visually-hidden();
-}
-.screen-reader-text:focus {
- @include visually-hidden-focus-reveal();
-}
-
-.wp-block-group.woocommerce.product .up-sells.upsells.products {
- max-width: var(--wp--style--global--wide-size);
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/component-init.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/component-init.js
deleted file mode 100644
index 6bdc5b02..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/component-init.js
+++ /dev/null
@@ -1,127 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockComponent } from '@woocommerce/blocks-registry';
-import { lazy } from '@wordpress/element';
-import { WC_BLOCKS_BUILD_URL } from '@woocommerce/block-settings';
-
-// Modify webpack publicPath at runtime based on location of WordPress Plugin.
-// eslint-disable-next-line no-undef,camelcase
-__webpack_public_path__ = WC_BLOCKS_BUILD_URL;
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-price',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-price" */ './product-elements/price/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-image',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-image" */ './product-elements/image/frontend'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-title',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-title" */ './product-elements/title/frontend'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-rating',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-rating" */ './product-elements/rating/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-rating-stars',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-rating-stars" */ './product-elements/rating-stars/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-rating-counter',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-rating-counter" */ './product-elements/rating-counter/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-average-rating',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-average-rating" */ './product-elements/average-rating/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-button',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-button" */ './product-elements/button/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-summary',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-summary" */ './product-elements/summary/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-sale-badge',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-sale-badge" */ './product-elements/sale-badge/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-sku',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-sku" */ './product-elements/sku/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-stock-indicator',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-stock-indicator" */ './product-elements/stock-indicator/block'
- )
- ),
-} );
-
-registerBlockComponent( {
- blockName: 'woocommerce/product-add-to-cart',
- component: lazy( () =>
- import(
- /* webpackChunkName: "product-add-to-cart" */ './product-elements/add-to-cart/frontend'
- )
- ),
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/index.js
deleted file mode 100644
index d62fb940..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Internal dependencies
- */
-import './product-elements/title';
-import './product-elements/price';
-import './product-elements/image';
-import './product-elements/rating';
-import './product-elements/rating-stars';
-import './product-elements/rating-counter';
-import './product-elements/average-rating';
-import './product-elements/button';
-import './product-elements/summary';
-import './product-elements/sale-badge';
-import './product-elements/sku';
-import './product-elements/stock-indicator';
-import './product-elements/add-to-cart';
-import './product-elements/add-to-cart-form';
-import './product-elements/product-image-gallery';
-import './product-elements/product-details';
-import './product-elements/product-reviews';
-import './product-elements/related-products';
-import './product-elements/product-meta';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/block.json
deleted file mode 100644
index 438429b8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/block.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "woocommerce/add-to-cart-form",
- "version": "1.0.0",
- "title": "Add to Cart with Options",
- "description": "Display a button so the customer can add a product to their cart. Options will also be displayed depending on product type. e.g. quantity, variation.",
- "attributes": {
- "isDescendentOfSingleProductBlock": {
- "type": "boolean",
- "default": false
- }
- },
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "usesContext": ["postId"],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/edit.tsx
deleted file mode 100644
index e4ffc5a2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/edit.tsx
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * External dependencies
- */
-import { useEffect } from '@wordpress/element';
-import { useBlockProps } from '@wordpress/block-editor';
-import { __ } from '@wordpress/i18n';
-import { Disabled, Tooltip } from '@wordpress/components';
-import { Skeleton } from '@woocommerce/base-components/skeleton';
-import { BlockEditProps } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import './editor.scss';
-import { useIsDescendentOfSingleProductBlock } from '../shared/use-is-descendent-of-single-product-block';
-export interface Attributes {
- className?: string;
- isDescendentOfSingleProductBlock: boolean;
-}
-
-const Edit = ( props: BlockEditProps< Attributes > ) => {
- const { setAttributes } = props;
- const blockProps = useBlockProps( {
- className: 'wc-block-add-to-cart-form',
- } );
- const { isDescendentOfSingleProductBlock } =
- useIsDescendentOfSingleProductBlock( {
- blockClientId: blockProps?.id,
- } );
-
- useEffect( () => {
- setAttributes( {
- isDescendentOfSingleProductBlock,
- } );
- }, [ setAttributes, isDescendentOfSingleProductBlock ] );
-
- return (
-
-
-
-
-
-
-
-
-
- { __(
- 'Add to cart',
- 'woo-gutenberg-products-block'
- ) }
-
-
-
-
-
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/editor.scss
deleted file mode 100644
index 230940d5..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/editor.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.wc-block-editor-add-to-cart-form-container {
- cursor: help;
- gap: 10px;
- display: flex;
- flex-direction: column;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/index.tsx
deleted file mode 100644
index d2002f33..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/index.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockSingleProductTemplate } from '@woocommerce/atomic-utils';
-import { Icon, button } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import metadata from './block.json';
-import edit from './edit';
-import './style.scss';
-import './editor.scss';
-
-const blockSettings = {
- edit,
- icon: {
- src: (
-
- ),
- },
- ancestor: [ 'woocommerce/single-product' ],
- save() {
- return null;
- },
-};
-
-registerBlockSingleProductTemplate( {
- blockName: metadata.name,
- blockMetadata: metadata,
- blockSettings,
- isAvailableOnPostEditor: true,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/style.scss
deleted file mode 100644
index 30284751..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart-form/style.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-.wc-block-add-to-cart-form {
- width: unset;
- /**
- * This is a base style for the input text element in WooCommerce that prevents inputs from appearing too small.
- *
- * @link https://github.com/woocommerce/woocommerce/blob/95ca53675f2817753d484583c96ca9ab9f725172/plugins/woocommerce/client/legacy/css/woocommerce-blocktheme.scss#L203-L206
- */
- .input-text {
- font-size: var(--wp--preset--font-size--small);
- padding: 0.9rem 1.1rem;
- }
-
- .quantity {
- display: inline-block;
- float: none;
- margin-right: 4px;
- vertical-align: middle;
-
- .qty {
- margin-right: 0.5rem;
- width: 3.631em;
- text-align: center;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/attributes.ts
deleted file mode 100644
index 993ebcc8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/attributes.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-export const blockAttributes = {
- showFormElements: {
- type: 'boolean',
- default: false,
- },
- productId: {
- type: 'number',
- default: 0,
- },
-};
-
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/block.tsx
deleted file mode 100644
index 19dd85dd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/block.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import {
- AddToCartFormContextProvider,
- useAddToCartFormContext,
-} from '@woocommerce/base-context';
-import { useProductDataContext } from '@woocommerce/shared-context';
-import { isEmpty } from '@woocommerce/types';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import { AddToCartButton } from './shared';
-import {
- SimpleProductForm,
- VariableProductForm,
- ExternalProductForm,
- GroupedProductForm,
-} from './product-types';
-
-interface Props {
- /**
- * CSS Class name for the component.
- */
- className?: string;
- /**
- * Whether or not to show form elements.
- */
- showFormElements?: boolean;
-}
-
-/**
- * Renders the add to cart form using useAddToCartFormContext.
- */
-const AddToCartForm = () => {
- const { showFormElements, productType } = useAddToCartFormContext();
-
- if ( showFormElements ) {
- if ( productType === 'variable' ) {
- return ;
- }
- if ( productType === 'grouped' ) {
- return ;
- }
- if ( productType === 'external' ) {
- return ;
- }
- if ( productType === 'simple' || productType === 'variation' ) {
- return ;
- }
- return null;
- }
-
- return ;
-};
-
-/**
- * Product Add to Form Block Component.
- */
-const Block = ( { className, showFormElements }: Props ) => {
- const { product } = useProductDataContext();
- const componentClass = classnames(
- className,
- 'wc-block-components-product-add-to-cart',
- {
- 'wc-block-components-product-add-to-cart--placeholder':
- isEmpty( product ),
- }
- );
-
- return (
-
-
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/constants.tsx
deleted file mode 100644
index d37c26dc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/constants.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { cart } from '@woocommerce/icons';
-import { Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE = __( 'Add to Cart', 'woo-gutenberg-products-block' );
-export const BLOCK_ICON = (
-
-);
-export const BLOCK_DESCRIPTION = __(
- 'Displays an add to cart button. Optionally displays other add to cart form elements.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/edit.tsx
deleted file mode 100644
index fc9e1c98..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/edit.tsx
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import EditProductLink from '@woocommerce/editor-components/edit-product-link';
-import { useProductDataContext } from '@woocommerce/shared-context';
-import classnames from 'classnames';
-import {
- Disabled,
- PanelBody,
- ToggleControl,
- Notice,
-} from '@wordpress/components';
-import { InspectorControls } from '@wordpress/block-editor';
-import { productSupportsAddToCartForm } from '@woocommerce/base-utils';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import Block from './block';
-import withProductSelector from '../shared/with-product-selector';
-import { BLOCK_TITLE, BLOCK_ICON } from './constants';
-
-interface EditProps {
- attributes: {
- className: string;
- showFormElements: boolean;
- };
- setAttributes: ( attributes: { showFormElements: boolean } ) => void;
-}
-
-const Edit = ( { attributes, setAttributes }: EditProps ) => {
- const { product } = useProductDataContext();
- const { className, showFormElements } = attributes;
-
- return (
-
-
-
-
- { productSupportsAddToCartForm( product ) ? (
-
- setAttributes( {
- showFormElements: ! showFormElements,
- } )
- }
- />
- ) : (
-
- { __(
- 'This product does not support the block based add to cart form. A link to the product page will be shown instead.',
- 'woo-gutenberg-products-block'
- ) }
-
- ) }
-
-
-
-
-
-
- );
-};
-
-export default withProductSelector( {
- icon: BLOCK_ICON,
- label: BLOCK_TITLE,
- description: __(
- 'Choose a product to display its add to cart form.',
- 'woo-gutenberg-products-block'
- ),
-} )( Edit );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/frontend.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/frontend.ts
deleted file mode 100644
index b6c77399..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/frontend.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * External dependencies
- */
-import { withFilteredAttributes } from '@woocommerce/shared-hocs';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import attributes from './attributes';
-
-export default withFilteredAttributes( attributes )( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/index.ts
deleted file mode 100644
index beb3e451..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * External dependencies
- */
-import { registerExperimentalBlockType } from '@woocommerce/block-settings';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import edit from './edit';
-import attributes from './attributes';
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-
-const blockConfig = {
- title,
- description,
- icon: { src: icon },
- edit,
- attributes,
-};
-
-registerExperimentalBlockType( 'woocommerce/product-add-to-cart', {
- ...sharedConfig,
- ...blockConfig,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/external.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/external.tsx
deleted file mode 100644
index fa2455ec..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/external.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Internal dependencies
- */
-import AddToCartButton from '../shared/add-to-cart-button';
-
-/**
- * External Product Add To Cart Form
- */
-const External = () => {
- return ;
-};
-
-export default External;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/grouped.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/grouped.tsx
deleted file mode 100644
index 1c5dae4c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/grouped.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-/**
- * Grouped Product Add To Cart Form
- */
-const Grouped = () => (
- This is a placeholder for the grouped products form element.
-);
-
-export default Grouped;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/index.ts
deleted file mode 100644
index 9c307dae..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { default as SimpleProductForm } from './simple';
-export { default as VariableProductForm } from './variable/index';
-export { default as ExternalProductForm } from './external';
-export { default as GroupedProductForm } from './grouped';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/simple.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/simple.tsx
deleted file mode 100644
index 8dc707ef..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/simple.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useAddToCartFormContext } from '@woocommerce/base-context';
-
-/**
- * Internal dependencies
- */
-import { AddToCartButton, QuantityInput, ProductUnavailable } from '../shared';
-
-/**
- * Simple Product Add To Cart Form
- */
-const Simple = () => {
- // @todo Add types for `useAddToCartFormContext`
- const {
- product,
- quantity,
- minQuantity,
- maxQuantity,
- multipleOf,
- dispatchActions,
- isDisabled,
- } = useAddToCartFormContext();
-
- if ( product.id && ! product.is_purchasable ) {
- return ;
- }
-
- if ( product.id && ! product.is_in_stock ) {
- return (
-
- );
- }
-
- return (
- <>
-
-
- >
- );
-};
-
-export default Simple;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/index.tsx
deleted file mode 100644
index 8aeb00f6..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/index.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useAddToCartFormContext } from '@woocommerce/base-context';
-
-/**
- * Internal dependencies
- */
-import {
- AddToCartButton,
- QuantityInput,
- ProductUnavailable,
-} from '../../shared';
-import VariationAttributes from './variation-attributes';
-
-/**
- * Variable Product Add To Cart Form
- */
-const Variable = () => {
- // @todo Add types for `useAddToCartFormContext`
- const {
- product,
- quantity,
- minQuantity,
- maxQuantity,
- multipleOf,
- dispatchActions,
- isDisabled,
- } = useAddToCartFormContext();
-
- if ( product.id && ! product.is_purchasable ) {
- return ;
- }
-
- if ( product.id && ! product.is_in_stock ) {
- return (
-
- );
- }
-
- return (
- <>
-
-
-
- >
- );
-};
-
-export default Variable;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/types.ts
deleted file mode 100644
index 0704b3ca..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/types.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { Dictionary } from '@woocommerce/types';
-
-export type AttributesMap = Record<
- string,
- { id: number; attributes: Dictionary }
->;
-
-export interface VariationParam {
- id: number;
- variation: {
- attribute: string;
- value: string;
- }[];
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-picker.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-picker.tsx
deleted file mode 100644
index 0a0a48a6..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-picker.tsx
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * External dependencies
- */
-import { useState, useEffect, useMemo } from '@wordpress/element';
-import { useShallowEqual } from '@woocommerce/base-hooks';
-import type { SelectControl } from '@wordpress/components';
-import { Dictionary, ProductResponseAttributeItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import AttributeSelectControl from './attribute-select-control';
-import {
- getVariationMatchingSelectedAttributes,
- getActiveSelectControlOptions,
- getDefaultAttributes,
-} from './utils';
-import { AttributesMap, VariationParam } from '../types';
-
-interface Props {
- attributes: Record< string, ProductResponseAttributeItem >;
- setRequestParams: ( param: VariationParam ) => void;
- variationAttributes: AttributesMap;
-}
-
-/**
- * AttributePicker component.
- */
-const AttributePicker = ( {
- attributes,
- variationAttributes,
- setRequestParams,
-}: Props ) => {
- const currentAttributes = useShallowEqual( attributes );
- const currentVariationAttributes = useShallowEqual( variationAttributes );
- const [ variationId, setVariationId ] = useState( 0 );
- const [ selectedAttributes, setSelectedAttributes ] =
- useState< Dictionary >( {} );
- const [ hasSetDefaults, setHasSetDefaults ] = useState( false );
-
- // Get options for each attribute picker.
- const filteredAttributeOptions = useMemo( () => {
- return getActiveSelectControlOptions(
- currentAttributes,
- currentVariationAttributes,
- selectedAttributes
- );
- }, [ selectedAttributes, currentAttributes, currentVariationAttributes ] );
-
- // Set default attributes as selected.
- useEffect( () => {
- if ( ! hasSetDefaults ) {
- const defaultAttributes = getDefaultAttributes( attributes );
- if ( defaultAttributes ) {
- setSelectedAttributes( {
- ...defaultAttributes,
- } );
- }
- setHasSetDefaults( true );
- }
- }, [ selectedAttributes, attributes, hasSetDefaults ] );
-
- // Select variations when selections are change.
- useEffect( () => {
- const hasSelectedAllAttributes =
- Object.values( selectedAttributes ).filter(
- ( selected ) => selected !== ''
- ).length === Object.keys( currentAttributes ).length;
-
- if ( hasSelectedAllAttributes ) {
- setVariationId(
- getVariationMatchingSelectedAttributes(
- currentAttributes,
- currentVariationAttributes,
- selectedAttributes
- )
- );
- } else if ( variationId > 0 ) {
- // Unset variation when form is incomplete.
- setVariationId( 0 );
- }
- }, [
- selectedAttributes,
- variationId,
- currentAttributes,
- currentVariationAttributes,
- ] );
-
- // Set requests params as variation ID and data changes.
- useEffect( () => {
- setRequestParams( {
- id: variationId,
- variation: Object.keys( selectedAttributes ).map(
- ( attributeName ) => {
- return {
- attribute: attributeName,
- value: selectedAttributes[ attributeName ],
- };
- }
- ),
- } );
- }, [ setRequestParams, variationId, selectedAttributes ] );
-
- return (
-
- { Object.keys( currentAttributes ).map( ( attributeName ) => (
-
{
- setSelectedAttributes( {
- ...selectedAttributes,
- [ attributeName ]: selected,
- } );
- } }
- />
- ) ) }
-
- );
-};
-
-export default AttributePicker;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-select-control.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-select-control.tsx
deleted file mode 100644
index e562ca4b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/attribute-select-control.tsx
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { decodeEntities } from '@wordpress/html-entities';
-import { SelectControl } from 'wordpress-components';
-import type { SelectControl as SelectControlType } from '@wordpress/components';
-import { useEffect } from '@wordpress/element';
-import classnames from 'classnames';
-import { ValidationInputError } from '@woocommerce/blocks-components';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-import { useDispatch, useSelect } from '@wordpress/data';
-
-interface Props extends SelectControlType.Props< string > {
- attributeName: string;
- errorMessage?: string;
-}
-
-// Default option for select boxes.
-const selectAnOption = {
- value: '',
- label: __( 'Select an option', 'woo-gutenberg-products-block' ),
-};
-
-/**
- * VariationAttributeSelect component.
- */
-const AttributeSelectControl = ( {
- attributeName,
- options = [],
- value = '',
- onChange = () => void 0,
- errorMessage = __(
- 'Please select a value.',
- 'woo-gutenberg-products-block'
- ),
-}: Props ) => {
- const errorId = attributeName;
-
- const { setValidationErrors, clearValidationError } =
- useDispatch( VALIDATION_STORE_KEY );
-
- const { error } = useSelect( ( select ) => {
- const store = select( VALIDATION_STORE_KEY );
- return {
- error: store.getValidationError( errorId ) || {},
- };
- } );
-
- useEffect( () => {
- if ( value ) {
- clearValidationError( errorId );
- } else {
- setValidationErrors( {
- [ errorId ]: {
- message: errorMessage,
- hidden: true,
- },
- } );
- }
- }, [
- value,
- errorId,
- errorMessage,
- clearValidationError,
- setValidationErrors,
- ] );
-
- // Remove validation errors when unmounted.
- useEffect(
- () => () => void clearValidationError( errorId ),
- [ errorId, clearValidationError ]
- );
-
- return (
-
-
-
-
- );
-};
-
-export default AttributeSelectControl;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/index.tsx
deleted file mode 100644
index a83497da..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/index.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * External dependencies
- */
-import { ProductResponseItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import AttributePicker from './attribute-picker';
-import { getAttributes, getVariationAttributes } from './utils';
-
-interface Props {
- dispatchers: { setRequestParams: () => void };
- product: ProductResponseItem;
-}
-
-/**
- * VariationAttributes component.
- */
-const VariationAttributes = ( { dispatchers, product }: Props ) => {
- const attributes = getAttributes( product.attributes );
- const variationAttributes = getVariationAttributes( product.variations );
- if (
- Object.keys( attributes ).length === 0 ||
- Object.keys( variationAttributes ).length === 0
- ) {
- return null;
- }
-
- return (
-
- );
-};
-
-export default VariationAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/style.scss
deleted file mode 100644
index 5f58b066..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/style.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-.wc-block-components-product-add-to-cart-attribute-picker {
- margin: 0;
- flex-basis: 100%;
-
- label {
- display: block;
- @include font-size(regular);
- }
-
- .wc-block-components-product-add-to-cart-attribute-picker__container {
- position: relative;
- }
-
- .wc-block-components-product-add-to-cart-attribute-picker__select {
- margin: 0 0 em($gap-small) 0;
-
- select {
- min-width: 60%;
- min-height: 1.75em;
- }
-
- &.has-error {
- margin-bottom: $gap-large;
-
- select {
- border-color: $alert-red;
- &:focus {
- outline-color: $alert-red;
- }
- }
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/test/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/test/index.ts
deleted file mode 100644
index d859338d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/test/index.ts
+++ /dev/null
@@ -1,487 +0,0 @@
-/**
- * External dependencies
- */
-import { ProductResponseAttributeItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import {
- getAttributes,
- getVariationAttributes,
- getVariationsMatchingSelectedAttributes,
- getVariationMatchingSelectedAttributes,
- getActiveSelectControlOptions,
- getDefaultAttributes,
-} from '../utils';
-
-const rawAttributeData: ProductResponseAttributeItem[] = [
- {
- id: 1,
- name: 'Color',
- taxonomy: 'pa_color',
- has_variations: true,
- terms: [
- {
- id: 22,
- name: 'Blue',
- slug: 'blue',
- default: true,
- },
- {
- id: 23,
- name: 'Green',
- slug: 'green',
- default: false,
- },
- {
- id: 24,
- name: 'Red',
- slug: 'red',
- default: false,
- },
- ],
- },
- {
- id: 0,
- name: 'Logo',
- taxonomy: 'pa_logo',
- has_variations: true,
- terms: [
- {
- id: 0,
- name: 'Yes',
- slug: 'Yes',
- default: true,
- },
- {
- id: 0,
- name: 'No',
- slug: 'No',
- default: false,
- },
- ],
- },
- {
- id: 0,
- name: 'Non-variable attribute',
- taxonomy: 'pa_non-variable-attribute',
- has_variations: false,
- terms: [
- {
- id: 0,
- name: 'Test',
- slug: 'Test',
- default: false,
- },
- {
- id: 0,
- name: 'Test 2',
- slug: 'Test 2',
- default: false,
- },
- ],
- },
-];
-
-const rawVariations = [
- {
- id: 35,
- attributes: [
- {
- name: 'Color',
- value: 'blue',
- },
- {
- name: 'Logo',
- value: 'Yes',
- },
- ],
- },
- {
- id: 28,
- attributes: [
- {
- name: 'Color',
- value: 'red',
- },
- {
- name: 'Logo',
- value: 'No',
- },
- ],
- },
- {
- id: 29,
- attributes: [
- {
- name: 'Color',
- value: 'green',
- },
- {
- name: 'Logo',
- value: 'No',
- },
- ],
- },
- {
- id: 30,
- attributes: [
- {
- name: 'Color',
- value: 'blue',
- },
- {
- name: 'Logo',
- value: 'No',
- },
- ],
- },
-];
-
-const formattedAttributes = {
- Color: {
- id: 1,
- name: 'Color',
- taxonomy: 'pa_color',
- has_variations: true,
- terms: [
- {
- id: 22,
- name: 'Blue',
- slug: 'blue',
- default: true,
- },
- {
- id: 23,
- name: 'Green',
- slug: 'green',
- default: false,
- },
- {
- id: 24,
- name: 'Red',
- slug: 'red',
- default: false,
- },
- ],
- },
- Size: {
- id: 2,
- name: 'Size',
- taxonomy: 'pa_size',
- has_variations: true,
- terms: [
- {
- id: 25,
- name: 'Large',
- slug: 'large',
- default: false,
- },
- {
- id: 26,
- name: 'Medium',
- slug: 'medium',
- default: true,
- },
- {
- id: 27,
- name: 'Small',
- slug: 'small',
- default: false,
- },
- ],
- },
-};
-
-describe( 'Testing utils', () => {
- describe( 'Testing getAttributes()', () => {
- it( 'returns empty object if there are no attributes', () => {
- const attributes = getAttributes( null );
- expect( attributes ).toStrictEqual( {} );
- } );
- it( 'returns list of attributes when given valid data', () => {
- const attributes = getAttributes( rawAttributeData );
- expect( attributes ).toStrictEqual( {
- Color: {
- id: 1,
- name: 'Color',
- taxonomy: 'pa_color',
- has_variations: true,
- terms: [
- {
- id: 22,
- name: 'Blue',
- slug: 'blue',
- default: true,
- },
- {
- id: 23,
- name: 'Green',
- slug: 'green',
- default: false,
- },
- {
- id: 24,
- name: 'Red',
- slug: 'red',
- default: false,
- },
- ],
- },
- Logo: {
- id: 0,
- name: 'Logo',
- taxonomy: 'pa_logo',
- has_variations: true,
- terms: [
- {
- id: 0,
- name: 'Yes',
- slug: 'Yes',
- default: true,
- },
- {
- id: 0,
- name: 'No',
- slug: 'No',
- default: false,
- },
- ],
- },
- } );
- } );
- } );
- describe( 'Testing getVariationAttributes()', () => {
- it( 'returns empty object if there are no variations', () => {
- const variationAttributes = getVariationAttributes( null );
- expect( variationAttributes ).toStrictEqual( {} );
- } );
- it( 'returns list of attribute names and value pairs when given valid data', () => {
- const variationAttributes = getVariationAttributes( rawVariations );
- expect( variationAttributes ).toStrictEqual( {
- 'id:35': {
- id: 35,
- attributes: {
- Color: 'blue',
- Logo: 'Yes',
- },
- },
- 'id:28': {
- id: 28,
- attributes: {
- Color: 'red',
- Logo: 'No',
- },
- },
- 'id:29': {
- id: 29,
- attributes: {
- Color: 'green',
- Logo: 'No',
- },
- },
- 'id:30': {
- id: 30,
- attributes: {
- Color: 'blue',
- Logo: 'No',
- },
- },
- } );
- } );
- } );
- describe( 'Testing getVariationsMatchingSelectedAttributes()', () => {
- const attributes = getAttributes( rawAttributeData );
- const variationAttributes = getVariationAttributes( rawVariations );
-
- it( 'returns all variations, in the correct order, if no selections have been made yet', () => {
- const selectedAttributes = {};
- const matches = getVariationsMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( [ 35, 28, 29, 30 ] );
- } );
-
- it( 'returns correct subset of variations after a selection', () => {
- const selectedAttributes = {
- Color: 'blue',
- };
- const matches = getVariationsMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( [ 35, 30 ] );
- } );
-
- it( 'returns correct subset of variations after all selections', () => {
- const selectedAttributes = {
- Color: 'blue',
- Logo: 'No',
- };
- const matches = getVariationsMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( [ 30 ] );
- } );
-
- it( 'returns no results if selection does not match or is invalid', () => {
- const selectedAttributes = {
- Color: 'brown',
- };
- const matches = getVariationsMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( [] );
- } );
- } );
- describe( 'Testing getVariationMatchingSelectedAttributes()', () => {
- const attributes = getAttributes( rawAttributeData );
- const variationAttributes = getVariationAttributes( rawVariations );
-
- it( 'returns first match if no selections have been made yet', () => {
- const selectedAttributes = {};
- const matches = getVariationMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( 35 );
- } );
-
- it( 'returns first match after single selection', () => {
- const selectedAttributes = {
- Color: 'blue',
- };
- const matches = getVariationMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( 35 );
- } );
-
- it( 'returns correct match after all selections', () => {
- const selectedAttributes = {
- Color: 'blue',
- Logo: 'No',
- };
- const matches = getVariationMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( 30 );
- } );
-
- it( 'returns no match if invalid', () => {
- const selectedAttributes = {
- Color: 'brown',
- };
- const matches = getVariationMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( matches ).toStrictEqual( 0 );
- } );
- } );
- describe( 'Testing getActiveSelectControlOptions()', () => {
- const attributes = getAttributes( rawAttributeData );
- const variationAttributes = getVariationAttributes( rawVariations );
-
- it( 'returns all possible options if no selections have been made yet', () => {
- const selectedAttributes = {};
- const controlOptions = getActiveSelectControlOptions(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( controlOptions ).toStrictEqual( {
- Color: [
- {
- value: 'blue',
- label: 'Blue',
- },
- {
- value: 'green',
- label: 'Green',
- },
- {
- value: 'red',
- label: 'Red',
- },
- ],
- Logo: [
- {
- value: 'Yes',
- label: 'Yes',
- },
- {
- value: 'No',
- label: 'No',
- },
- ],
- } );
- } );
-
- it( 'returns only valid options if color is selected', () => {
- const selectedAttributes = {
- Color: 'green',
- };
- const controlOptions = getActiveSelectControlOptions(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- expect( controlOptions ).toStrictEqual( {
- Color: [
- {
- value: 'blue',
- label: 'Blue',
- },
- {
- value: 'green',
- label: 'Green',
- },
- {
- value: 'red',
- label: 'Red',
- },
- ],
- Logo: [
- {
- value: 'No',
- label: 'No',
- },
- ],
- } );
- } );
- } );
- describe( 'Testing getDefaultAttributes()', () => {
- const defaultAttributes = getDefaultAttributes( formattedAttributes );
-
- it( 'should return default attributes in the format that is ready for setting state', () => {
- expect( defaultAttributes ).toStrictEqual( {
- Color: 'blue',
- Size: 'medium',
- } );
- } );
-
- it( 'should return an empty object if given unexpected values', () => {
- // @ts-expect-error Expected TS Error as we are checking how the function does with *unexpected values*.
- expect( getDefaultAttributes( [] ) ).toStrictEqual( {} );
- // @ts-expect-error Ditto above.
- expect( getDefaultAttributes( null ) ).toStrictEqual( {} );
- // @ts-expect-error Ditto above.
- expect( getDefaultAttributes( undefined ) ).toStrictEqual( {} );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/utils.ts
deleted file mode 100644
index edb77eab..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/product-types/variable/variation-attributes/utils.ts
+++ /dev/null
@@ -1,295 +0,0 @@
-/**
- * External dependencies
- */
-import { decodeEntities } from '@wordpress/html-entities';
-import {
- Dictionary,
- isObject,
- ProductResponseAttributeItem,
- ProductResponseTermItem,
- ProductResponseVariationsItem,
-} from '@woocommerce/types';
-import { keyBy } from '@woocommerce/base-utils';
-
-/**
- * Internal dependencies
- */
-import { AttributesMap } from '../types';
-
-/**
- * Key an array of attributes by name,
- */
-export const getAttributes = (
- attributes?: ProductResponseAttributeItem[] | null
-) => {
- return attributes
- ? keyBy(
- Object.values( attributes ).filter(
- ( { has_variations: hasVariations } ) => hasVariations
- ),
- 'name'
- )
- : {};
-};
-
-/**
- * Format variations from the API into a map of just the attribute names and values.
- *
- * Note, each item is keyed by the variation ID with an id: prefix. This is to prevent the object
- * being reordered when iterated.
- */
-export const getVariationAttributes = (
- /**
- * List of Variation objects and attributes keyed by variation ID.
- */
- variations?: ProductResponseVariationsItem[] | null
-) => {
- if ( ! variations ) {
- return {};
- }
-
- const attributesMap: AttributesMap = {};
-
- variations.forEach( ( { id, attributes } ) => {
- attributesMap[ `id:${ id }` ] = {
- id,
- attributes: attributes.reduce( ( acc, { name, value } ) => {
- acc[ name ] = value;
- return acc;
- }, {} as Dictionary ),
- };
- } );
-
- return attributesMap;
-};
-
-/**
- * Given a list of variations and a list of attribute values, return variations which match.
- *
- * Allows an attribute to be excluded by name. This is used to filter displayed options for
- * individual attribute selects.
- *
- * @return List of matching variation IDs.
- */
-export const getVariationsMatchingSelectedAttributes = (
- /**
- * List of attribute names and terms.
- *
- * As returned from {@link getAttributes()}.
- */
- attributes: Record< string, ProductResponseAttributeItem >,
- /**
- * Attributes for each variation keyed by variation ID.
- *
- * As returned from {@link getVariationAttributes()}.
- */
- variationAttributes: AttributesMap,
- /**
- * Attribute Name Value pairs of current selections by the user.
- */
- selectedAttributes: Record< string, string | null >
-) => {
- const variationIds = Object.values( variationAttributes ).map(
- ( { id } ) => id
- );
-
- // If nothing is selected yet, just return all variations.
- if (
- Object.values( selectedAttributes ).every( ( value ) => value === '' )
- ) {
- return variationIds;
- }
-
- const attributeNames = Object.keys( attributes );
-
- return variationIds.filter( ( variationId ) =>
- attributeNames.every( ( attributeName ) => {
- const selectedAttribute = selectedAttributes[ attributeName ] || '';
- const variationAttribute =
- variationAttributes[ 'id:' + variationId ].attributes[
- attributeName
- ];
-
- // If there is no selected attribute, consider this a match.
- if ( selectedAttribute === '' ) {
- return true;
- }
- // If the variation attributes for this attribute are set to null, it matches all values.
- if ( variationAttribute === null ) {
- return true;
- }
- // Otherwise, only match if the selected values are the same.
- return variationAttribute === selectedAttribute;
- } )
- );
-};
-
-/**
- * Given a list of variations and a list of attribute values, returns the first matched variation ID.
- *
- * @return Variation ID.
- */
-export const getVariationMatchingSelectedAttributes = (
- /**
- * List of attribute names and terms.
- *
- * As returned from {@link getAttributes()}.
- */
- attributes: Record< string, ProductResponseAttributeItem >,
- /**
- * Attributes for each variation keyed by variation ID.
- *
- * As returned from {@link getVariationAttributes()}.
- */
- variationAttributes: AttributesMap,
- /**
- * Attribute Name Value pairs of current selections by the user.
- */
- selectedAttributes: Dictionary
-) => {
- const matchingVariationIds = getVariationsMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributes
- );
- return matchingVariationIds[ 0 ] || 0;
-};
-
-/**
- * Given a list of terms, filter them and return valid options for the select boxes.
- *
- * @see getActiveSelectControlOptions
- *
- * @return Value/Label pairs of select box options.
- */
-const getValidSelectControlOptions = (
- /**
- * List of attribute term objects.
- */
- attributeTerms: ProductResponseTermItem[],
- /**
- * Valid values if selections have been made already.
- */
- validAttributeTerms: Array< string | null > | null = null
-) => {
- return Object.values( attributeTerms )
- .map( ( { name, slug } ) => {
- if (
- validAttributeTerms === null ||
- validAttributeTerms.includes( null ) ||
- validAttributeTerms.includes( slug )
- ) {
- return {
- value: slug,
- label: decodeEntities( name ),
- };
- }
- return null;
- } )
- .filter( Boolean );
-};
-
-/**
- * Given a list of terms, filter them and return active options for the select boxes. This factors in
- * which options should be hidden due to current selections.
- *
- * @return Select box options.
- */
-export const getActiveSelectControlOptions = (
- /**
- * List of attribute names and terms.
- *
- * As returned from {@link getAttributes()}.
- */
- attributes: Record< string, ProductResponseAttributeItem >,
- /**
- * Attributes for each variation keyed by variation ID.
- *
- * As returned from {@link getVariationAttributes()}.
- */
- variationAttributes: AttributesMap,
- /**
- * Attribute Name Value pairs of current selections by the user.
- */
- selectedAttributes: Dictionary
-) => {
- const options: Record<
- string,
- Array< { label: string; value: string } | null >
- > = {};
- const attributeNames = Object.keys( attributes );
- const hasSelectedAttributes =
- Object.values( selectedAttributes ).filter( Boolean ).length > 0;
-
- attributeNames.forEach( ( attributeName ) => {
- const currentAttribute = attributes[ attributeName ];
- const selectedAttributesExcludingCurrentAttribute = {
- ...selectedAttributes,
- [ attributeName ]: null,
- };
- // This finds matching variations for selected attributes apart from this one. This will be
- // used to get valid attribute terms of the current attribute narrowed down by those matching
- // variation IDs. For example, if I had Large Blue Shirts and Medium Red Shirts, I want to only
- // show Red shirts if Medium is selected.
- const matchingVariationIds = hasSelectedAttributes
- ? getVariationsMatchingSelectedAttributes(
- attributes,
- variationAttributes,
- selectedAttributesExcludingCurrentAttribute
- )
- : null;
- // Uses the above matching variation IDs to get the attributes from just those variations.
- const validAttributeTerms =
- matchingVariationIds !== null
- ? matchingVariationIds.map(
- ( varId ) =>
- variationAttributes[ 'id:' + varId ].attributes[
- attributeName
- ]
- )
- : null;
- // Intersects attributes with valid attributes.
- options[ attributeName ] = getValidSelectControlOptions(
- currentAttribute.terms,
- validAttributeTerms
- );
- } );
-
- return options;
-};
-
-/**
- * Return the default values of the given attributes in a format ready to be set in state.
- *
- * @return Default attributes.
- */
-export const getDefaultAttributes = (
- /**
- * List of attribute names and terms.
- *
- * As returned from {@link getAttributes()}.
- */
- attributes: Record< string, ProductResponseAttributeItem >
-) => {
- if ( ! isObject( attributes ) ) {
- return {};
- }
-
- const attributeNames = Object.keys( attributes );
-
- if ( attributeNames.length === 0 ) {
- return {};
- }
-
- const attributesEntries = Object.values( attributes );
-
- return attributesEntries.reduce( ( acc, curr ) => {
- const defaultValues = curr.terms.filter( ( term ) => term.default );
-
- if ( defaultValues.length > 0 ) {
- acc[ curr.name ] = defaultValues[ 0 ]?.slug;
- }
-
- return acc;
- }, {} as Dictionary );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/add-to-cart-button.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/add-to-cart-button.tsx
deleted file mode 100644
index d36e7da5..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/add-to-cart-button.tsx
+++ /dev/null
@@ -1,181 +0,0 @@
-/**
- * External dependencies
- */
-import { __, _n, sprintf } from '@wordpress/i18n';
-import Button, { ButtonProps } from '@woocommerce/base-components/button';
-import { Icon, check } from '@wordpress/icons';
-import { useState, useEffect } from '@wordpress/element';
-import { useAddToCartFormContext } from '@woocommerce/base-context';
-import {
- useStoreEvents,
- useStoreAddToCart,
-} from '@woocommerce/base-context/hooks';
-import { useInnerBlockLayoutContext } from '@woocommerce/shared-context';
-
-type LinkProps = Pick< ButtonProps, 'className' | 'href' | 'onClick' | 'text' >;
-
-interface ButtonComponentProps
- extends Pick< ButtonProps, 'className' | 'onClick' > {
- /**
- * Whether the button is disabled or not.
- */
- isDisabled: boolean;
- /**
- * Whether processing is done.
- */
- isDone: boolean;
- /**
- * Whether processing action is occurring.
- */
- isProcessing: ButtonProps[ 'showSpinner' ];
- /**
- * Quantity of said item currently in the cart.
- */
- quantityInCart: number;
-}
-
-/**
- * Button component for non-purchasable products.
- */
-const LinkComponent = ( { className, href, text, onClick }: LinkProps ) => {
- return (
-
- { text }
-
- );
-};
-
-/**
- * Button for purchasable products.
- */
-const ButtonComponent = ( {
- className,
- quantityInCart,
- isProcessing,
- isDisabled,
- isDone,
- onClick,
-}: ButtonComponentProps ) => {
- return (
-
- { isDone && quantityInCart > 0
- ? sprintf(
- /* translators: %s number of products in cart. */
- _n(
- '%d in cart',
- '%d in cart',
- quantityInCart,
- 'woo-gutenberg-products-block'
- ),
- quantityInCart
- )
- : __( 'Add to cart', 'woo-gutenberg-products-block' ) }
- { !! isDone && }
-
- );
-};
-
-/**
- * Add to Cart Form Button Component.
- */
-const AddToCartButton = () => {
- // @todo Add types for `useAddToCartFormContext`
- const {
- showFormElements,
- productIsPurchasable,
- productHasOptions,
- product,
- productType,
- isDisabled,
- isProcessing,
- eventRegistration,
- hasError,
- dispatchActions,
- } = useAddToCartFormContext();
- const { parentName } = useInnerBlockLayoutContext();
- const { dispatchStoreEvent } = useStoreEvents();
- const { cartQuantity } = useStoreAddToCart( product.id || 0 );
- const [ addedToCart, setAddedToCart ] = useState( false );
- const addToCartButtonData = product.add_to_cart || {
- url: '',
- text: '',
- };
-
- // Subscribe to emitter for after processing.
- useEffect( () => {
- const onSuccess = () => {
- if ( ! hasError ) {
- setAddedToCart( true );
- }
- return true;
- };
- const unsubscribeProcessing =
- eventRegistration.onAddToCartAfterProcessingWithSuccess(
- onSuccess,
- 0
- );
- return () => {
- unsubscribeProcessing();
- };
- }, [ eventRegistration, hasError ] );
-
- /**
- * We can show a real button if we are:
- *
- * a) Showing a full add to cart form.
- * b) The product doesn't have options and can therefore be added directly to the cart.
- * c) The product is purchasable.
- *
- * Otherwise we show a link instead.
- */
- const showButton =
- ( showFormElements ||
- ( ! productHasOptions && productType === 'simple' ) ) &&
- productIsPurchasable;
-
- return showButton ? (
- {
- dispatchActions.submitForm(
- `woocommerce/single-product/${ product?.id || 0 }`
- );
- dispatchStoreEvent( 'cart-add-item', {
- product,
- listName: parentName,
- } );
- } }
- />
- ) : (
- {
- dispatchStoreEvent( 'product-view-link', {
- product,
- listName: parentName,
- } );
- } }
- />
- );
-};
-
-export default AddToCartButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/index.ts
deleted file mode 100644
index 9fe6eed8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { default as AddToCartButton } from './add-to-cart-button';
-export { default as QuantityInput } from './quantity-input';
-export { default as ProductUnavailable } from './product-unavailable';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/product-unavailable.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/product-unavailable.tsx
deleted file mode 100644
index 77644f5b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/product-unavailable.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-
-const ProductUnavailable = ( {
- reason = __(
- 'Sorry, this product cannot be purchased.',
- 'woo-gutenberg-products-block'
- ),
-} ) => {
- return (
-
- { reason }
-
- );
-};
-
-export default ProductUnavailable;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/quantity-input.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/quantity-input.tsx
deleted file mode 100644
index a9c1e257..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/shared/quantity-input.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * External dependencies
- */
-import { useDebouncedCallback } from 'use-debounce';
-
-type JSXInputProps = JSX.IntrinsicElements[ 'input' ];
-
-interface QuantityInputProps extends Omit< JSXInputProps, 'onChange' > {
- max: number;
- min: number;
- onChange: ( val: number | string ) => void;
- step: number;
-}
-
-/**
- * Quantity Input Component.
- */
-const QuantityInput = ( {
- disabled,
- min,
- max,
- step = 1,
- value,
- onChange,
-}: QuantityInputProps ) => {
- const hasMaximum = typeof max !== 'undefined';
-
- /**
- * The goal of this function is to normalize what was inserted,
- * but after the customer has stopped typing.
- *
- * It's important to wait before normalizing or we end up with
- * a frustrating experience, for example, if the minimum is 2 and
- * the customer is trying to type "10", premature normalizing would
- * always kick in at "1" and turn that into 2.
- *
- * Copied from
- */
- const normalizeQuantity = useDebouncedCallback< ( val: number ) => void >(
- ( initialValue ) => {
- // We copy the starting value.
- let newValue = initialValue;
-
- // We check if we have a maximum value, and select the lowest between what was inserted and the maximum.
- if ( hasMaximum ) {
- newValue = Math.min(
- newValue,
- // the maximum possible value in step increments.
- Math.floor( max / step ) * step
- );
- }
-
- // Select the biggest between what's inserted, the the minimum value in steps.
- newValue = Math.max( newValue, Math.ceil( min / step ) * step );
-
- // We round off the value to our steps.
- newValue = Math.floor( newValue / step ) * step;
-
- // Only commit if the value has changed
- if ( newValue !== initialValue ) {
- onChange?.( newValue );
- }
- },
- 300
- );
-
- return (
- {
- onChange?.( e.target.value );
- normalizeQuantity( Number( e.target.value ) );
- } }
- />
- );
-};
-
-export default QuantityInput;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/style.scss
deleted file mode 100644
index 686d216a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/add-to-cart/style.scss
+++ /dev/null
@@ -1,49 +0,0 @@
-.wc-block-components-product-add-to-cart {
- margin: 0;
- display: flex;
- flex-wrap: wrap;
-
- .wc-block-components-product-add-to-cart-button {
- margin: 0 0 em($gap-small) 0;
-
- .wc-block-components-button__text {
- display: block;
-
- > svg {
- fill: currentColor;
- vertical-align: top;
- width: 1.5em;
- height: 1.5em;
- margin: -0.25em 0 -0.25em 0.5em;
- }
- }
- }
-
- .wc-block-components-product-add-to-cart-quantity {
- margin: 0 1em em($gap-small) 0;
- flex-basis: 5em;
- padding: 0.618em;
- background: $white;
- border: 1px solid #ccc;
- border-radius: $universal-border-radius;
- color: #43454b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.125);
- text-align: center;
- }
-}
-
-.is-loading .wc-block-components-product-add-to-cart,
-.wc-block-components-product-add-to-cart--placeholder {
- .wc-block-components-product-add-to-cart-quantity,
- .wc-block-components-product-add-to-cart-button {
- @include placeholder();
- }
-}
-
-.wc-block-grid .wc-block-components-product-add-to-cart {
- justify-content: center;
-}
-
-.wc-block-components-product-add-to-cart-notice {
- margin: 0;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.json
deleted file mode 100644
index 8cc355d8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "woocommerce/product-average-rating",
- "version": "1.0.0",
- "title": "Product Average Rating (Beta)",
- "description": "Display the average rating of a product",
- "attributes": {
- "textAlign": {
- "type": "string"
- }
- },
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "ancestor": [ "woocommerce/single-product" ],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.tsx
deleted file mode 100644
index 796b55f7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/block.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { useProductDataContext } from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { __ } from '@wordpress/i18n';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-
-type ProductAverageRatingProps = {
- className?: string;
- textAlign?: string;
-};
-
-export const Block = ( props: ProductAverageRatingProps ): JSX.Element => {
- const { textAlign } = props;
- const styleProps = useStyleProps( props );
- const { product } = useProductDataContext();
-
- const className = classnames(
- styleProps.className,
- 'wc-block-components-product-average-rating',
- {
- [ `has-text-align-${ textAlign }` ]: textAlign,
- }
- );
-
- return (
-
- { Number( product.average_rating ) > 0
- ? product.average_rating
- : __( 'No ratings', 'woo-gutenberg-products-block' ) }
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/edit.tsx
deleted file mode 100644
index c5a311e0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/edit.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * External dependencies
- */
-import {
- AlignmentToolbar,
- BlockControls,
- useBlockProps,
-} from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-
-export interface BlockAttributes {
- textAlign: string;
-}
-
-const Edit = ( props: BlockEditProps< BlockAttributes > ): JSX.Element => {
- const { attributes, setAttributes } = props;
- const blockProps = useBlockProps( {
- className: 'wp-block-woocommerce-product-average-rating',
- } );
-
- return (
- <>
-
- {
- setAttributes( { textAlign: newAlign || '' } );
- } }
- />
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/index.tsx
deleted file mode 100644
index 6933405f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/index.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import { Icon, starHalf } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import metadata from './block.json';
-import edit from './edit';
-import { supports } from './support';
-
-registerBlockType( metadata, {
- icon: {
- src: (
-
- ),
- },
- supports,
- edit,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/support.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/support.ts
deleted file mode 100644
index d8724d99..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/average-rating/support.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/* eslint-disable @wordpress/no-unsafe-wp-apis */
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-
-export const supports = {
- ...( isFeaturePluginBuild() && {
- color: {
- text: true,
- background: true,
- __experimentalSkipSerialization: true,
- },
- spacing: {
- margin: true,
- padding: true,
- __experimentalSkipSerialization: true,
- },
- typography: {
- fontSize: true,
- __experimentalFontWeight: true,
- __experimentalSkipSerialization: true,
- },
- __experimentalSelector: '.wc-block-components-product-average-rating',
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.json
deleted file mode 100644
index 54b85118..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.json
+++ /dev/null
@@ -1,66 +0,0 @@
-{
- "name": "woocommerce/product-button",
- "version": "1.0.0",
- "title": "Add to Cart Button",
- "description": "Display a call to action button which either adds the product to the cart, or links to the product page.",
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "usesContext": [ "query", "queryId", "postId" ],
- "textdomain": "woocommerce",
- "attributes": {
- "productId": {
- "type": "number",
- "default": 0
- },
- "textAlign": {
- "type": "string",
- "default": ""
- },
- "width": {
- "type": "number"
- },
- "isDescendentOfSingleProductBlock": {
- "type": "boolean",
- "default": false
- },
- "isDescendentOfQueryLoop": {
- "type": "boolean",
- "default": false
- }
- },
- "supports": {
- "align": [ "wide", "full" ],
- "color": {
- "background": false,
- "link": true
- },
- "interactivity": true,
- "html": false,
- "typography": {
- "fontSize": true,
- "lineHeight": true
- }
- },
- "ancestor": [
- "woocommerce/all-products",
- "woocommerce/single-product",
- "core/post-template",
- "woocommerce/product-template"
- ],
- "styles": [
- {
- "name": "fill",
- "label": "Fill",
- "isDefault": true
- },
- {
- "name": "outline",
- "label": "Outline"
- }
- ],
- "viewScript": [
- "wc-product-button-interactivity-frontend"
- ],
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.tsx
deleted file mode 100644
index 2199c1e3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/block.tsx
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { __, _n, sprintf } from '@wordpress/i18n';
-import {
- useStoreEvents,
- useStoreAddToCart,
-} from '@woocommerce/base-context/hooks';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { decodeEntities } from '@wordpress/html-entities';
-import { CART_URL } from '@woocommerce/block-settings';
-import { getSetting } from '@woocommerce/settings';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import type {
- BlockAttributes,
- AddToCartButtonAttributes,
- AddToCartButtonPlaceholderAttributes,
-} from './types';
-
-const AddToCartButton = ( {
- product,
- className,
- style,
-}: AddToCartButtonAttributes ): JSX.Element => {
- const {
- id,
- permalink,
- add_to_cart: productCartDetails,
- has_options: hasOptions,
- is_purchasable: isPurchasable,
- is_in_stock: isInStock,
- } = product;
- const { dispatchStoreEvent } = useStoreEvents();
- const { cartQuantity, addingToCart, addToCart } = useStoreAddToCart( id );
-
- const addedToCart = Number.isFinite( cartQuantity ) && cartQuantity > 0;
- const allowAddToCart = ! hasOptions && isPurchasable && isInStock;
- const buttonAriaLabel = decodeEntities(
- productCartDetails?.description || ''
- );
- const buttonText = addedToCart
- ? sprintf(
- /* translators: %s number of products in cart. */
- _n(
- '%d in cart',
- '%d in cart',
- cartQuantity,
- 'woo-gutenberg-products-block'
- ),
- cartQuantity
- )
- : decodeEntities(
- productCartDetails?.text ||
- __( 'Add to cart', 'woo-gutenberg-products-block' )
- );
-
- const ButtonTag = allowAddToCart ? 'button' : 'a';
- const buttonProps = {} as HTMLAnchorElement & { onClick: () => void };
-
- if ( ! allowAddToCart ) {
- buttonProps.href = permalink;
- buttonProps.rel = 'nofollow';
- buttonProps.onClick = () => {
- dispatchStoreEvent( 'product-view-link', {
- product,
- } );
- };
- } else {
- buttonProps.onClick = async () => {
- await addToCart();
- dispatchStoreEvent( 'cart-add-item', {
- product,
- } );
- // redirect to cart if the setting to redirect to the cart page
- // on cart add item is enabled
- const { cartRedirectAfterAdd }: { cartRedirectAfterAdd: boolean } =
- getSetting( 'productsSettings' );
- if ( cartRedirectAfterAdd ) {
- window.location.href = CART_URL;
- }
- };
- }
-
- return (
-
- { buttonText }
-
- );
-};
-
-const AddToCartButtonPlaceholder = ( {
- className,
- style,
-}: AddToCartButtonPlaceholderAttributes ): JSX.Element => {
- return (
-
- );
-};
-
-export const Block = ( props: BlockAttributes ): JSX.Element => {
- const { className, textAlign } = props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
-
- return (
-
- { product.id ? (
-
- ) : (
-
- ) }
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/edit.tsx
deleted file mode 100644
index 4eac892c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/edit.tsx
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import {
- Disabled,
- Button,
- ButtonGroup,
- PanelBody,
-} from '@wordpress/components';
-import { __ } from '@wordpress/i18n';
-import {
- AlignmentToolbar,
- BlockControls,
- useBlockProps,
- InspectorControls,
-} from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-import { useEffect } from '@wordpress/element';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import { BlockAttributes } from './types';
-
-function WidthPanel( {
- selectedWidth,
- setAttributes,
-}: {
- selectedWidth: number | undefined;
- setAttributes: ( attributes: BlockAttributes ) => void;
-} ) {
- function handleChange( newWidth: number ) {
- // Check if we are toggling the width off
- const width = selectedWidth === newWidth ? undefined : newWidth;
-
- // Update attributes.
- setAttributes( { width } );
- }
-
- return (
-
-
- { [ 25, 50, 75, 100 ].map( ( widthValue ) => {
- return (
- handleChange( widthValue ) }
- >
- { widthValue }%
-
- );
- } ) }
-
-
- );
-}
-
-const Edit = ( {
- attributes,
- setAttributes,
- context,
-}: BlockEditProps< BlockAttributes > & {
- context?: Context | undefined;
-} ): JSX.Element => {
- const blockProps = useBlockProps();
- const isDescendentOfQueryLoop = Number.isFinite( context?.queryId );
- const { width } = attributes;
-
- useEffect(
- () => setAttributes( { isDescendentOfQueryLoop } ),
- [ setAttributes, isDescendentOfQueryLoop ]
- );
- return (
- <>
-
- { isDescendentOfQueryLoop && (
- {
- setAttributes( { textAlign: newAlign || '' } );
- } }
- />
- ) }
-
-
-
-
-
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/frontend.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/frontend.tsx
deleted file mode 100644
index ebbd2084..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/frontend.tsx
+++ /dev/null
@@ -1,300 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-/**
- * External dependencies
- */
-import { CART_STORE_KEY as storeKey } from '@woocommerce/block-data';
-import { store as interactivityStore } from '@woocommerce/interactivity';
-import { dispatch, select, subscribe } from '@wordpress/data';
-import { Cart } from '@woocommerce/type-defs/cart';
-import { createRoot } from '@wordpress/element';
-import NoticeBanner from '@woocommerce/base-components/notice-banner';
-
-type Context = {
- woocommerce: {
- isLoading: boolean;
- addToCartText: string;
- productId: number;
- displayViewCart: boolean;
- quantityToAdd: number;
- temporaryNumberOfItems: number;
- animationStatus: AnimationStatus;
- };
-};
-
-enum AnimationStatus {
- IDLE = 'IDLE',
- SLIDE_OUT = 'SLIDE-OUT',
- SLIDE_IN = 'SLIDE-IN',
-}
-
-type State = {
- woocommerce: {
- cart: Cart | undefined;
- inTheCartText: string;
- };
-};
-
-type Store = {
- state: State;
- context: Context;
- selectors: any;
- ref: HTMLElement;
-};
-
-const storeNoticeClass = '.wc-block-store-notices';
-
-const createNoticeContainer = () => {
- const noticeContainer = document.createElement( 'div' );
- noticeContainer.classList.add( storeNoticeClass.replace( '.', '' ) );
- return noticeContainer;
-};
-
-const injectNotice = ( domNode: Element, errorMessage: string ) => {
- const root = createRoot( domNode );
-
- root.render(
- root.unmount() }>
- { errorMessage }
-
- );
-
- domNode?.scrollIntoView( {
- behavior: 'smooth',
- inline: 'nearest',
- } );
-};
-
-// RequestIdleCallback is not available in Safari, so we use setTimeout as an alternative.
-const callIdleCallback =
- window.requestIdleCallback || ( ( cb ) => setTimeout( cb, 100 ) );
-
-const getProductById = ( cartState: Cart | undefined, productId: number ) => {
- return cartState?.items.find( ( item ) => item.id === productId );
-};
-
-const getTextButton = ( {
- addToCartText,
- inTheCartText,
- numberOfItems,
-}: {
- addToCartText: string;
- inTheCartText: string;
- numberOfItems: number;
-} ) => {
- if ( numberOfItems === 0 ) {
- return addToCartText;
- }
- return inTheCartText.replace( '###', numberOfItems.toString() );
-};
-
-const productButtonSelectors = {
- woocommerce: {
- addToCartText: ( store: Store ) => {
- const { context, state, selectors } = store;
-
- // We use the temporary number of items when there's no animation, or the
- // second part of the animation hasn't started.
- if (
- context.woocommerce.animationStatus === AnimationStatus.IDLE ||
- context.woocommerce.animationStatus ===
- AnimationStatus.SLIDE_OUT
- ) {
- return getTextButton( {
- addToCartText: context.woocommerce.addToCartText,
- inTheCartText: state.woocommerce.inTheCartText,
- numberOfItems: context.woocommerce.temporaryNumberOfItems,
- } );
- }
-
- return getTextButton( {
- addToCartText: context.woocommerce.addToCartText,
- inTheCartText: state.woocommerce.inTheCartText,
- numberOfItems:
- selectors.woocommerce.numberOfItemsInTheCart( store ),
- } );
- },
- displayViewCart: ( store: Store ) => {
- const { context, selectors } = store;
- if ( ! context.woocommerce.displayViewCart ) return false;
- if ( ! selectors.woocommerce.hasCartLoaded( store ) ) {
- return context.woocommerce.temporaryNumberOfItems > 0;
- }
- return selectors.woocommerce.numberOfItemsInTheCart( store ) > 0;
- },
- hasCartLoaded: ( { state }: { state: State } ) => {
- return state.woocommerce.cart !== undefined;
- },
- numberOfItemsInTheCart: ( { state, context }: Store ) => {
- const product = getProductById(
- state.woocommerce.cart,
- context.woocommerce.productId
- );
- return product?.quantity || 0;
- },
- slideOutAnimation: ( { context }: Store ) =>
- context.woocommerce.animationStatus === AnimationStatus.SLIDE_OUT,
- slideInAnimation: ( { context }: Store ) =>
- context.woocommerce.animationStatus === AnimationStatus.SLIDE_IN,
- },
-};
-
-interactivityStore(
- // @ts-expect-error: Store function isn't typed.
- {
- selectors: productButtonSelectors,
- actions: {
- woocommerce: {
- addToCart: async ( store: Store ) => {
- const { context, selectors, ref } = store;
-
- if ( ! ref.classList.contains( 'ajax_add_to_cart' ) ) {
- return;
- }
-
- context.woocommerce.isLoading = true;
-
- // Allow 3rd parties to validate and quit early.
- // https://github.com/woocommerce/woocommerce/blob/154dd236499d8a440edf3cde712511b56baa8e45/plugins/woocommerce/client/legacy/js/frontend/add-to-cart.js/#L74-L77
- const event = new CustomEvent(
- 'should_send_ajax_request.adding_to_cart',
- { detail: [ ref ], cancelable: true }
- );
- const shouldSendRequest =
- document.body.dispatchEvent( event );
-
- if ( shouldSendRequest === false ) {
- const ajaxNotSentEvent = new CustomEvent(
- 'ajax_request_not_sent.adding_to_cart',
- { detail: [ false, false, ref ] }
- );
- document.body.dispatchEvent( ajaxNotSentEvent );
- return true;
- }
-
- try {
- await dispatch( storeKey ).addItemToCart(
- context.woocommerce.productId,
- context.woocommerce.quantityToAdd
- );
-
- // After the cart has been updated, sync the temporary number of
- // items again.
- context.woocommerce.temporaryNumberOfItems =
- selectors.woocommerce.numberOfItemsInTheCart(
- store
- );
- } catch ( error ) {
- const storeNoticeBlock =
- document.querySelector( storeNoticeClass );
-
- if ( ! storeNoticeBlock ) {
- document
- .querySelector( '.entry-content' )
- ?.prepend( createNoticeContainer() );
- }
-
- const domNode =
- storeNoticeBlock ??
- document.querySelector( storeNoticeClass );
-
- if ( domNode ) {
- injectNotice( domNode, error.message );
- }
-
- // We don't care about errors blocking execution, but will
- // console.error for troubleshooting.
- // eslint-disable-next-line no-console
- console.error( error );
- } finally {
- context.woocommerce.displayViewCart = true;
- context.woocommerce.isLoading = false;
- }
- },
- handleAnimationEnd: (
- store: Store & { event: AnimationEvent }
- ) => {
- const { event, context, selectors } = store;
- if ( event.animationName === 'slideOut' ) {
- // When the first part of the animation (slide-out) ends, we move
- // to the second part (slide-in).
- context.woocommerce.animationStatus =
- AnimationStatus.SLIDE_IN;
- } else if ( event.animationName === 'slideIn' ) {
- // When the second part of the animation ends, we update the
- // temporary number of items to sync it with the cart and reset the
- // animation status so it can be triggered again.
- context.woocommerce.temporaryNumberOfItems =
- selectors.woocommerce.numberOfItemsInTheCart(
- store
- );
- context.woocommerce.animationStatus =
- AnimationStatus.IDLE;
- }
- },
- },
- },
- init: {
- woocommerce: {
- syncTemporaryNumberOfItemsOnLoad: ( store: Store ) => {
- const { selectors, context } = store;
- // If the cart has loaded when we instantiate this element, we sync
- // the temporary number of items with the number of items in the cart
- // to avoid triggering the animation. We do this only once, but we
- // use useLayoutEffect to avoid the useEffect flickering.
- if ( selectors.woocommerce.hasCartLoaded( store ) ) {
- context.woocommerce.temporaryNumberOfItems =
- selectors.woocommerce.numberOfItemsInTheCart(
- store
- );
- }
- },
- },
- },
- effects: {
- woocommerce: {
- startAnimation: ( store: Store ) => {
- const { context, selectors } = store;
- // We start the animation if the cart has loaded, the temporary number
- // of items is out of sync with the number of items in the cart, the
- // button is not loading (because that means the user started the
- // interaction) and the animation hasn't started yet.
- if (
- selectors.woocommerce.hasCartLoaded( store ) &&
- context.woocommerce.temporaryNumberOfItems !==
- selectors.woocommerce.numberOfItemsInTheCart(
- store
- ) &&
- ! context.woocommerce.isLoading &&
- context.woocommerce.animationStatus ===
- AnimationStatus.IDLE
- ) {
- context.woocommerce.animationStatus =
- AnimationStatus.SLIDE_OUT;
- }
- },
- },
- },
- },
- {
- afterLoad: ( store: Store ) => {
- const { state, selectors } = store;
- // Subscribe to changes in Cart data.
- subscribe( () => {
- const cartData = select( storeKey ).getCartData();
- const isResolutionFinished =
- select( storeKey ).hasFinishedResolution( 'getCartData' );
- if ( isResolutionFinished ) {
- state.woocommerce.cart = cartData;
- }
- }, storeKey );
-
- // This selector triggers a fetch of the Cart data. It is done in a
- // `requestIdleCallback` to avoid potential performance issues.
- callIdleCallback( () => {
- if ( ! selectors.woocommerce.hasCartLoaded( store ) ) {
- select( storeKey ).getCartData();
- }
- } );
- },
- }
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/index.tsx
deleted file mode 100644
index 60121d4f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/index.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * External dependencies
- */
-import { Icon, button } from '@wordpress/icons';
-import { registerBlockType } from '@wordpress/blocks';
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import { __experimentalGetSpacingClassesAndStyles } from '@wordpress/block-editor';
-/**
- * Internal dependencies
- */
-import edit from './edit';
-import save from './save';
-import metadata from './block.json';
-
-const featurePluginSupport = {
- ...metadata.supports,
- ...( isFeaturePluginBuild() && {
- color: {
- text: true,
- background: true,
- link: false,
- __experimentalSkipSerialization: true,
- },
- __experimentalBorder: {
- radius: true,
- __experimentalSkipSerialization: true,
- },
- ...( typeof __experimentalGetSpacingClassesAndStyles === 'function' && {
- spacing: {
- margin: true,
- padding: true,
- __experimentalSkipSerialization: true,
- },
- } ),
- typography: {
- fontSize: true,
- lineHeight: true,
- __experimentalFontWeight: true,
- __experimentalFontFamily: true,
- __experimentalFontStyle: true,
- __experimentalTextTransform: true,
- __experimentalTextDecoration: true,
- __experimentalLetterSpacing: true,
- __experimentalDefaultControls: {
- fontSize: true,
- },
- },
- __experimentalSelector:
- '.wp-block-button.wc-block-components-product-button .wc-block-components-product-button__button',
- } ),
- ...( typeof __experimentalGetSpacingClassesAndStyles === 'function' &&
- ! isFeaturePluginBuild() && {
- spacing: {
- margin: true,
- },
- } ),
-};
-// @ts-expect-error: `metadata` currently does not have a type definition in WordPress core
-registerBlockType( metadata, {
- icon: {
- src: (
-
- ),
- },
- attributes: {
- ...metadata.attributes,
- },
- supports: {
- ...featurePluginSupport,
- },
- edit,
- save,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/save.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/save.tsx
deleted file mode 100644
index 267b4993..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/save.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-import classnames from 'classnames';
-
-/**
- * Internal dependencies
- */
-import { BlockAttributes } from './types';
-
-type Props = {
- attributes: BlockAttributes;
-};
-
-const Save = ( { attributes }: Props ): JSX.Element | null => {
- if (
- attributes.isDescendentOfQueryLoop ||
- attributes.isDescendentOfSingleProductBlock
- ) {
- return null;
- }
-
- return (
-
- );
-};
-
-export default Save;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/style.scss
deleted file mode 100644
index d9d63605..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/style.scss
+++ /dev/null
@@ -1,145 +0,0 @@
-.wp-block-button.wc-block-components-product-button {
- word-break: break-word;
- white-space: normal;
- display: flex;
- justify-content: center;
- flex-direction: column;
- align-items: center;
- gap: $gap-small;
-
- .wp-block-button__link {
- word-break: break-word;
- white-space: normal;
- display: inline-flex;
- justify-content: center;
- text-align: center;
- // Set button font size so it inherits from parent.
- font-size: 1em;
-
- &.loading {
- opacity: 0.25;
- }
-
- &.loading::after {
- font-family: WooCommerce; /* stylelint-disable-line */
- content: "\e031";
- animation: spin 2s linear infinite;
- margin-right: 0;
- margin-left: 0.5em;
- display: inline-block;
- width: auto;
- height: auto;
- }
- }
-
- a[hidden] {
- display: none;
- }
-
- @keyframes slideOut {
- from {
- transform: translateY(0);
- }
- to {
- transform: translateY(-100%);
- }
- }
-
- @keyframes slideIn {
- from {
- transform: translateY(90%);
- opacity: 0;
- }
- to {
- transform: translate(0);
- opacity: 1;
- }
- }
-
- &.align-left {
- align-items: flex-start;
- }
-
- &.align-right {
- align-items: flex-end;
- }
-
- .wc-block-components-product-button__button {
- border-style: none;
- display: inline-flex;
- justify-content: center;
- white-space: normal;
- word-break: break-word;
- overflow: hidden;
- align-items: center;
- line-height: inherit;
-
- span {
-
- &.wc-block-slide-out {
- animation: slideOut 0.1s linear 1 normal forwards;
- }
- &.wc-block-slide-in {
- animation: slideIn 0.1s linear 1 normal;
- }
- }
- }
-
- .wc-block-components-product-button__button--placeholder {
- @include placeholder();
- min-width: 8em;
- min-height: 3em;
- }
-
- .wc-block-all-products & {
- margin-bottom: $gap-small;
- }
-}
-
-.is-loading .wc-block-components-product-button > .wc-block-components-product-button__button {
- @include placeholder();
- min-width: 8em;
- min-height: 3em;
-}
-
-.theme-twentytwentyone {
- // Prevent buttons appearing disabled in the editor.
- .editor-styles-wrapper .wc-block-components-product-button .wp-block-button__link {
- background-color: var(--button--color-background);
- color: var(--button--color-text);
- border-color: var(--button--color-background);
- }
-}
-
-// Style: Fill & Outline
-.wp-block-button.is-style-outline {
- .wp-block-button__link {
- border: 2px solid currentColor;
-
- &:not(.has-text-color) {
- color: currentColor;
- }
-
- &:not(.has-background) {
- background-color: transparent;
- background-image: none;
- }
- }
-}
-
-// Width setting
-.wp-block-button {
- &.has-custom-width {
- .wp-block-button__link {
- box-sizing: border-box;
- }
- }
-
- @for $i from 1 through 4 {
- &.wp-block-button__width-#{$i * 25} {
- .wp-block-button__link {
- width: $i * 25%; // 25%, 50%, 75%, 100%
- }
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/types.ts
deleted file mode 100644
index 6f429e53..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/button/types.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-interface WithClass {
- className: string;
-}
-
-interface WithStyle {
- style: Record< string, unknown >;
-}
-
-export interface BlockAttributes {
- className?: string | undefined;
- textAlign?: string | undefined;
- isDescendentOfQueryLoop?: boolean | undefined;
- isDescendentOfSingleProductBlock?: boolean | undefined;
- width?: number | undefined;
-}
-
-export interface AddToCartButtonPlaceholderAttributes {
- className: string;
- style: React.CSSProperties;
-}
-
-export interface AddToCartButtonAttributes
- extends AddToCartButtonPlaceholderAttributes {
- product: {
- id: number;
- permalink: string;
- add_to_cart: {
- url: string;
- description: string;
- text: string;
- };
- has_options: boolean;
- is_purchasable: boolean;
- is_in_stock: boolean;
- };
- textAlign?: ( WithClass & WithStyle ) | undefined;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/attributes.ts
deleted file mode 100644
index 24056422..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/attributes.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * External dependencies
- */
-import type { BlockAttributes } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import { ImageSizing } from './types';
-
-export const blockAttributes: BlockAttributes = {
- showProductLink: {
- type: 'boolean',
- default: true,
- },
- showSaleBadge: {
- type: 'boolean',
- default: true,
- },
- saleBadgeAlign: {
- type: 'string',
- default: 'right',
- },
- imageSizing: {
- type: 'string',
- default: ImageSizing.SINGLE,
- },
- productId: {
- type: 'number',
- default: 0,
- },
- isDescendentOfQueryLoop: {
- type: 'boolean',
- default: false,
- },
- isDescendentOfSingleProductBlock: {
- type: 'boolean',
- default: false,
- },
- width: {
- type: 'string',
- },
- height: {
- type: 'string',
- },
- scale: {
- type: 'string',
- default: 'cover',
- },
- aspectRatio: {
- type: 'string',
- },
-};
-
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/block.tsx
deleted file mode 100644
index 7eb3250d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/block.tsx
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * External dependencies
- */
-import { Fragment } from '@wordpress/element';
-import { __, sprintf } from '@wordpress/i18n';
-import classnames from 'classnames';
-import { PLACEHOLDER_IMG_SRC } from '@woocommerce/settings';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import { useStoreEvents } from '@woocommerce/base-context/hooks';
-import type { HTMLAttributes } from 'react';
-
-/**
- * Internal dependencies
- */
-import ProductSaleBadge from '../sale-badge/block';
-import './style.scss';
-import { BlockAttributes, ImageSizing } from './types';
-
-const ImagePlaceholder = ( props ): JSX.Element => {
- return (
-
- );
-};
-
-interface ImageProps {
- image?: null | {
- alt?: string | undefined;
- id: number;
- name: string;
- sizes?: string | undefined;
- src?: string | undefined;
- srcset?: string | undefined;
- thumbnail?: string | undefined;
- };
- loaded: boolean;
- showFullSize: boolean;
- fallbackAlt: string;
- scale: string;
- width?: string | undefined;
- height?: string | undefined;
- aspectRatio: string | undefined;
-}
-
-const Image = ( {
- image,
- loaded,
- showFullSize,
- fallbackAlt,
- width,
- scale,
- height,
- aspectRatio,
-}: ImageProps ): JSX.Element => {
- const { thumbnail, src, srcset, sizes, alt } = image || {};
- const imageProps = {
- alt: alt || fallbackAlt,
- hidden: ! loaded,
- src: thumbnail,
- ...( showFullSize && { src, srcSet: srcset, sizes } ),
- };
-
- const imageStyles: Record< string, string | undefined > = {
- height,
- width,
- objectFit: scale,
- aspectRatio,
- };
-
- return (
- <>
- { imageProps.src && (
- /* eslint-disable-next-line jsx-a11y/alt-text */
-
- ) }
- { ! image && }
- >
- );
-};
-
-type Props = BlockAttributes & HTMLAttributes< HTMLDivElement >;
-
-export const Block = ( props: Props ): JSX.Element | null => {
- const {
- className,
- imageSizing = ImageSizing.SINGLE,
- showProductLink = true,
- showSaleBadge,
- saleBadgeAlign = 'right',
- height,
- width,
- scale,
- aspectRatio,
- ...restProps
- } = props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product, isLoading } = useProductDataContext();
- const { dispatchStoreEvent } = useStoreEvents();
-
- if ( ! product.id ) {
- return (
-
-
-
- );
- }
- const hasProductImages = !! product.images.length;
- const image = hasProductImages ? product.images[ 0 ] : null;
- const ParentComponent = showProductLink ? 'a' : Fragment;
- const anchorLabel = sprintf(
- /* translators: %s is referring to the product name */
- __( 'Link to %s', 'woo-gutenberg-products-block' ),
- product.name
- );
- const anchorProps = {
- href: product.permalink,
- ...( ! hasProductImages && { 'aria-label': anchorLabel } ),
- onClick: () => {
- dispatchStoreEvent( 'product-view-link', {
- product,
- } );
- },
- };
-
- return (
-
-
- { !! showSaleBadge && (
-
- ) }
-
-
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/constants.tsx
deleted file mode 100644
index 5ccf1075..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/constants.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { image, Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'Product Image',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Display the main product image.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/edit.tsx
deleted file mode 100644
index b90ee88d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/edit.tsx
+++ /dev/null
@@ -1,199 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
-import { createInterpolateElement, useEffect } from '@wordpress/element';
-import { getAdminLink, getSettingWithCoercion } from '@woocommerce/settings';
-import { isBoolean } from '@woocommerce/types';
-import type { BlockEditProps } from '@wordpress/blocks';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-import {
- Disabled,
- PanelBody,
- ToggleControl,
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore - Ignoring because `__experimentalToggleGroupControl` is not yet in the type definitions.
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalToggleGroupControl as ToggleGroupControl,
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore - Ignoring because `__experimentalToggleGroupControl` is not yet in the type definitions.
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalToggleGroupControlOption as ToggleGroupControlOption,
-} from '@wordpress/components';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import withProductSelector from '../shared/with-product-selector';
-import {
- BLOCK_TITLE as label,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-import { BlockAttributes, ImageSizing } from './types';
-import { ImageSizeSettings } from './image-size-settings';
-
-type SaleBadgeAlignProps = 'left' | 'center' | 'right';
-
-const Edit = ( {
- attributes,
- setAttributes,
- context,
-}: BlockEditProps< BlockAttributes > & { context: Context } ): JSX.Element => {
- const {
- showProductLink,
- imageSizing,
- showSaleBadge,
- saleBadgeAlign,
- width,
- height,
- scale,
- } = attributes;
- const blockProps = useBlockProps( { style: { width, height } } );
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
- const isBlockThemeEnabled = getSettingWithCoercion(
- 'isBlockThemeEnabled',
- false,
- isBoolean
- );
-
- useEffect(
- () => setAttributes( { isDescendentOfQueryLoop } ),
- [ setAttributes, isDescendentOfQueryLoop ]
- );
-
- return (
-
-
-
-
-
- setAttributes( {
- showProductLink: ! showProductLink,
- } )
- }
- />
-
- setAttributes( {
- showSaleBadge: ! showSaleBadge,
- } )
- }
- />
- { showSaleBadge && (
-
- setAttributes( { saleBadgeAlign: value } )
- }
- >
-
-
-
-
- ) }
- { ! isBlockThemeEnabled && (
- Customizer.',
- 'woo-gutenberg-products-block'
- ),
- {
- a: (
- // eslint-disable-next-line jsx-a11y/anchor-has-content
-
- ),
- }
- ) }
- value={ imageSizing }
- onChange={ ( value: ImageSizing ) =>
- setAttributes( { imageSizing: value } )
- }
- >
-
-
-
- ) }
-
-
-
-
-
-
- );
-};
-
-export default withProductSelector( { icon, label, description } )( Edit );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/frontend.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/frontend.ts
deleted file mode 100644
index b6c77399..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/frontend.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * External dependencies
- */
-import { withFilteredAttributes } from '@woocommerce/shared-hocs';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import attributes from './attributes';
-
-export default withFilteredAttributes( attributes )( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/image-size-settings.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/image-size-settings.tsx
deleted file mode 100644
index 22ade62c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/image-size-settings.tsx
+++ /dev/null
@@ -1,127 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { BlockAttributes } from '@wordpress/blocks';
-import {
- // @ts-expect-error Using experimental features
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalToggleGroupControl as ToggleGroupControl,
- // @ts-expect-error Using experimental features
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalToggleGroupControlOption as ToggleGroupControlOption,
- // @ts-expect-error Using experimental features
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalToolsPanel as ToolsPanel,
- // @ts-expect-error Using experimental features
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalToolsPanelItem as ToolsPanelItem,
- // @ts-expect-error Using experimental features
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalUnitControl as UnitControl,
-} from '@wordpress/components';
-
-interface ImageSizeSettingProps {
- scale: string;
- width: string | undefined;
- height: string | undefined;
- setAttributes: ( attrs: BlockAttributes ) => void;
-}
-
-const scaleHelp: Record< string, string > = {
- cover: __(
- 'Image is scaled and cropped to fill the entire space without being distorted.',
- 'woo-gutenberg-products-block'
- ),
- contain: __(
- 'Image is scaled to fill the space without clipping nor distorting.',
- 'woo-gutenberg-products-block'
- ),
- fill: __(
- 'Image will be stretched and distorted to completely fill the space.',
- 'woo-gutenberg-products-block'
- ),
-};
-
-export const ImageSizeSettings = ( {
- scale,
- width,
- height,
- setAttributes,
-}: ImageSizeSettingProps ) => {
- return (
-
- {
- setAttributes( { height: value } );
- } }
- value={ height }
- units={ [
- {
- value: 'px',
- label: 'px',
- },
- ] }
- />
- {
- setAttributes( { width: value } );
- } }
- value={ width }
- units={ [
- {
- value: 'px',
- label: 'px',
- },
- ] }
- />
- { height && (
- true }
- label={ __( 'Scale', 'woo-gutenberg-products-block' ) }
- >
-
- setAttributes( {
- scale: value,
- } )
- }
- isBlock
- >
- <>
-
-
-
- >
-
-
- ) }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/index.ts
deleted file mode 100644
index f2edff84..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/index.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import type { BlockConfiguration } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import edit from './edit';
-
-import { supports } from './supports';
-import attributes from './attributes';
-import sharedConfig from '../shared/config';
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-
-const blockConfig: BlockConfiguration = {
- ...sharedConfig,
- apiVersion: 2,
- name: 'woocommerce/product-image',
- title,
- icon: { src: icon },
- keywords: [ 'WooCommerce' ],
- description,
- usesContext: [ 'query', 'queryId', 'postId' ],
- ancestor: [
- 'woocommerce/all-products',
- 'woocommerce/single-product',
- 'core/post-template',
- 'woocommerce/product-template',
- ],
- textdomain: 'woo-gutenberg-products-block',
- attributes,
- supports,
- edit,
-};
-
-registerBlockType( 'woocommerce/product-image', { ...blockConfig } );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/style.scss
deleted file mode 100644
index 7c08d449..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/style.scss
+++ /dev/null
@@ -1,67 +0,0 @@
-.editor-styles-wrapper .wc-block-grid__products .wc-block-grid__product .wc-block-components-product-image,
-.wc-block-components-product-image {
- text-decoration: none;
- display: block;
- position: relative;
-
- a {
- border-radius: inherit;
- text-decoration: none;
- border: 0;
- outline: 0;
- box-shadow: none;
- }
-
- img {
- border-radius: inherit;
- vertical-align: middle;
- width: 100%;
- height: auto;
-
- &[hidden] {
- display: none;
- }
- }
-
- img[alt=""] {
- border: 1px solid $image-placeholder-border-color;
- }
-
- .wc-block-components-product-sale-badge {
- &--align-left {
- position: absolute;
- left: $gap-smaller * 0.5;
- top: $gap-smaller * 0.5;
- right: auto;
- margin: 0;
- }
- &--align-center {
- position: absolute;
- top: $gap-smaller * 0.5;
- left: 50%;
- right: auto;
- transform: translateX(-50%);
- margin: 0;
- }
- &--align-right {
- position: absolute;
- right: $gap-smaller * 0.5;
- top: $gap-smaller * 0.5;
- left: auto;
- margin: 0;
- }
- }
-}
-
-.is-loading .wc-block-components-product-image {
- @include placeholder($include-border-radius: false);
- width: auto;
-}
-
-.wc-block-components-product-image {
- margin: 0 0 $gap-small;
-}
-
-.wc-block-product-image__tools-panel .components-input-control {
- margin-bottom: 8px;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/supports.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/supports.ts
deleted file mode 100644
index 27110fe3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/supports.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-/* eslint-disable @wordpress/no-unsafe-wp-apis */
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import { __experimentalGetSpacingClassesAndStyles as getSpacingClassesAndStyles } from '@wordpress/block-editor';
-
-/**
- * Internal dependencies
- */
-
-export const supports = {
- html: false,
- ...( isFeaturePluginBuild() && {
- __experimentalBorder: {
- radius: true,
- __experimentalSkipSerialization: true,
- },
- typography: {
- fontSize: true,
- __experimentalSkipSerialization: true,
- },
- ...( typeof getSpacingClassesAndStyles === 'function' && {
- spacing: {
- margin: true,
- padding: true,
- },
- } ),
- __experimentalSelector: '.wc-block-components-product-image',
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/test/block.test.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/test/block.test.tsx
deleted file mode 100644
index 7f47f6e8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/test/block.test.tsx
+++ /dev/null
@@ -1,289 +0,0 @@
-/**
- * External dependencies
- */
-import { render, fireEvent } from '@testing-library/react';
-import { ProductDataContextProvider } from '@woocommerce/shared-context';
-import { ProductResponseItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import { Block } from '../block';
-import { ImageSizing } from '../types';
-
-jest.mock( '@woocommerce/base-hooks', () => ( {
- __esModule: true,
- useStyleProps: jest.fn( () => ( {
- className: '',
- style: {},
- } ) ),
-} ) );
-
-const productWithoutImages: ProductResponseItem = {
- name: 'Test product',
- id: 1,
- permalink: 'http://test.com/product/test-product/',
- images: [],
- parent: 0,
- type: '',
- variation: '',
- sku: '',
- short_description: '',
- description: '',
- on_sale: false,
- prices: {
- currency_code: 'USD',
- currency_symbol: '',
- currency_minor_unit: 0,
- currency_decimal_separator: '',
- currency_thousand_separator: '',
- currency_prefix: '',
- currency_suffix: '',
- price: '',
- regular_price: '',
- sale_price: '',
- price_range: null,
- },
- price_html: '',
- average_rating: '',
- review_count: 0,
- categories: [],
- tags: [],
- attributes: [],
- variations: [],
- has_options: false,
- is_purchasable: false,
- is_in_stock: false,
- is_on_backorder: false,
- low_stock_remaining: null,
- sold_individually: false,
- add_to_cart: {
- text: '',
- description: '',
- url: '',
- minimum: 0,
- maximum: 0,
- multiple_of: 0,
- },
-};
-
-const productWithImages: ProductResponseItem = {
- name: 'Test product',
- id: 1,
- permalink: 'http://test.com/product/test-product/',
- images: [
- {
- id: 56,
- src: 'logo-1.jpg',
- thumbnail: 'logo-1-324x324.jpg',
- srcset: 'logo-1.jpg 800w, logo-1-300x300.jpg 300w, logo-1-150x150.jpg 150w, logo-1-768x767.jpg 768w, logo-1-324x324.jpg 324w, logo-1-416x415.jpg 416w, logo-1-100x100.jpg 100w',
- sizes: '(max-width: 800px) 100vw, 800px',
- name: 'logo-1.jpg',
- alt: '',
- },
- {
- id: 55,
- src: 'beanie-with-logo-1.jpg',
- thumbnail: 'beanie-with-logo-1-324x324.jpg',
- srcset: 'beanie-with-logo-1.jpg 800w, beanie-with-logo-1-300x300.jpg 300w, beanie-with-logo-1-150x150.jpg 150w, beanie-with-logo-1-768x768.jpg 768w, beanie-with-logo-1-324x324.jpg 324w, beanie-with-logo-1-416x416.jpg 416w, beanie-with-logo-1-100x100.jpg 100w',
- sizes: '(max-width: 800px) 100vw, 800px',
- name: 'beanie-with-logo-1.jpg',
- alt: '',
- },
- ],
- parent: 0,
- type: '',
- variation: '',
- sku: '',
- short_description: '',
- description: '',
- on_sale: false,
- prices: {
- currency_code: 'USD',
- currency_symbol: '',
- currency_minor_unit: 0,
- currency_decimal_separator: '',
- currency_thousand_separator: '',
- currency_prefix: '',
- currency_suffix: '',
- price: '',
- regular_price: '',
- sale_price: '',
- price_range: null,
- },
- price_html: '',
- average_rating: '',
- review_count: 0,
- categories: [],
- tags: [],
- attributes: [],
- variations: [],
- has_options: false,
- is_purchasable: false,
- is_in_stock: false,
- is_on_backorder: false,
- low_stock_remaining: null,
- sold_individually: false,
- add_to_cart: {
- text: '',
- description: '',
- url: '',
- minimum: 0,
- maximum: 0,
- multiple_of: 0,
- },
-};
-
-describe( 'Product Image Block', () => {
- describe( 'with product link', () => {
- test( 'should render an anchor with the product image', () => {
- const component = render(
-
-
-
- );
-
- // use testId as alt is added after image is loaded
- const image = component.getByTestId( 'product-image' );
- fireEvent.load( image );
-
- const productImage = component.getByAltText(
- productWithImages.name
- );
- expect( productImage.getAttribute( 'src' ) ).toBe(
- productWithImages.images[ 0 ].src
- );
-
- const anchor = productImage.closest( 'a' );
- expect( anchor?.getAttribute( 'href' ) ).toBe(
- productWithImages.permalink
- );
- } );
-
- test( 'should render an anchor with the placeholder image', () => {
- const component = render(
-
-
-
- );
-
- const placeholderImage = component.getByAltText( '' );
- expect( placeholderImage.getAttribute( 'src' ) ).toBe(
- 'placeholder.jpg'
- );
-
- const anchor = placeholderImage.closest( 'a' );
- expect( anchor?.getAttribute( 'href' ) ).toBe(
- productWithoutImages.permalink
- );
- expect( anchor?.getAttribute( 'aria-label' ) ).toBe(
- `Link to ${ productWithoutImages.name }`
- );
- } );
- } );
-
- describe( 'without product link', () => {
- test( 'should render the product image without an anchor wrapper', () => {
- const component = render(
-
-
-
- );
- const image = component.getByTestId( 'product-image' );
- fireEvent.load( image );
-
- const productImage = component.getByAltText(
- productWithImages.name
- );
- expect( productImage.getAttribute( 'src' ) ).toBe(
- productWithImages.images[ 0 ].src
- );
-
- const anchor = productImage.closest( 'a' );
- expect( anchor ).toBe( null );
- } );
-
- test( 'should render the placeholder image without an anchor wrapper', () => {
- const component = render(
-
-
-
- );
-
- const placeholderImage = component.getByAltText( '' );
- expect( placeholderImage.getAttribute( 'src' ) ).toBe(
- 'placeholder.jpg'
- );
-
- const anchor = placeholderImage.closest( 'a' );
- expect( anchor ).toBe( null );
- } );
- } );
-
- describe( 'without image', () => {
- test( 'should render the placeholder with no inline width or height attributes', () => {
- const component = render(
-
-
-
- );
-
- const placeholderImage = component.getByAltText( '' );
- expect( placeholderImage.getAttribute( 'src' ) ).toBe(
- 'placeholder.jpg'
- );
- expect( placeholderImage.getAttribute( 'width' ) ).toBe( null );
- expect( placeholderImage.getAttribute( 'height' ) ).toBe( null );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/types.ts
deleted file mode 100644
index ccd88e86..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/image/types.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-export enum ImageSizing {
- SINGLE = 'single',
- THUMBNAIL = 'thumbnail',
-}
-
-export interface BlockAttributes {
- // The product ID.
- productId: number;
- // CSS Class name for the component.
- className?: string | undefined;
- // Whether or not to display a link to the product page.
- showProductLink: boolean;
- // Whether or not to display the on sale badge.
- showSaleBadge: boolean;
- // How should the sale badge be aligned if displayed.
- saleBadgeAlign: 'left' | 'center' | 'right';
- // Size of image to use.
- imageSizing: ImageSizing;
- // Whether or not be a children of Query Loop Block.
- isDescendentOfQueryLoop: boolean;
- // Height of the image.
- height?: string;
- // Width of the image.
- width?: string;
- // Image scaling method.
- scale: 'cover' | 'contain' | 'fill';
- // Aspect ratio of the image.
- aspectRatio: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/attributes.ts
deleted file mode 100644
index 0acba812..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/attributes.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * External dependencies
- */
-import { BlockAttributes } from '@wordpress/blocks';
-
-export const blockAttributes: BlockAttributes = {
- productId: {
- type: 'number',
- default: 0,
- },
- isDescendentOfQueryLoop: {
- type: 'boolean',
- default: false,
- },
- textAlign: {
- type: 'string',
- default: '',
- },
- isDescendentOfSingleProductTemplate: {
- type: 'boolean',
- default: false,
- },
- isDescendentOfSingleProductBlock: {
- type: 'boolean',
- default: false,
- },
-};
-
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/block.tsx
deleted file mode 100644
index 3f660566..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/block.tsx
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import ProductPrice from '@woocommerce/base-components/product-price';
-import { getCurrencyFromPriceResponse } from '@woocommerce/price-format';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import { CurrencyCode } from '@woocommerce/type-defs/currency';
-import type { HTMLAttributes } from 'react';
-
-/**
- * Internal dependencies
- */
-import type { BlockAttributes } from './types';
-
-type Props = BlockAttributes & HTMLAttributes< HTMLDivElement >;
-
-interface PriceProps {
- currency_code: CurrencyCode;
- currency_symbol: string;
- currency_minor_unit: number;
- currency_decimal_separator: string;
- currency_thousand_separator: string;
- currency_prefix: string;
- currency_suffix: string;
- price: string;
- regular_price: string;
- sale_price: string;
- price_range: null | { min_amount: string; max_amount: string };
-}
-
-export const Block = ( props: Props ): JSX.Element | null => {
- const { className, textAlign, isDescendentOfSingleProductTemplate } = props;
- const styleProps = useStyleProps( props );
- const { parentName, parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
-
- const isDescendentOfAllProductsBlock =
- parentName === 'woocommerce/all-products';
-
- const wrapperClassName = classnames(
- 'wc-block-components-product-price',
- className,
- styleProps.className,
- {
- [ `${ parentClassName }__product-price` ]: parentClassName,
- }
- );
-
- if ( ! product.id && ! isDescendentOfSingleProductTemplate ) {
- const productPriceComponent = (
-
- );
- if ( isDescendentOfAllProductsBlock ) {
- return (
-
- { productPriceComponent }
-
- );
- }
- return productPriceComponent;
- }
-
- const prices: PriceProps = product.prices;
- const currency = isDescendentOfSingleProductTemplate
- ? getCurrencyFromPriceResponse()
- : getCurrencyFromPriceResponse( prices );
-
- const pricePreview = '5000';
- const isOnSale = prices.price !== prices.regular_price;
- const priceClassName = classnames( {
- [ `${ parentClassName }__product-price__value` ]: parentClassName,
- [ `${ parentClassName }__product-price__value--on-sale` ]: isOnSale,
- } );
-
- const productPriceComponent = (
-
- );
- if ( isDescendentOfAllProductsBlock ) {
- return (
-
- { productPriceComponent }
-
- );
- }
- return productPriceComponent;
-};
-
-export default ( props: Props ) => {
- // It is necessary because this block has to support serveral contexts:
- // - Inside `All Products Block` -> `withProductDataContext` HOC
- // - Inside `Products Block` -> Gutenberg Context
- // - Inside `Single Product Template` -> Gutenberg Context
- // - Without any parent -> `WithSelector` and `withProductDataContext` HOCs
- // For more details, check https://github.com/woocommerce/woocommerce-blocks/pull/8609
- if ( props.isDescendentOfSingleProductTemplate ) {
- return ;
- }
- return withProductDataContext( Block )( props );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/constants.tsx
deleted file mode 100644
index 544becb8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/constants.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { currencyDollar, Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'Product Price',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Display the price of a product.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/edit.tsx
deleted file mode 100644
index d0cd2d33..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/edit.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * External dependencies
- */
-import {
- AlignmentToolbar,
- BlockControls,
- useBlockProps,
-} from '@wordpress/block-editor';
-import { useEffect } from '@wordpress/element';
-import type { BlockAlignment } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import { useIsDescendentOfSingleProductTemplate } from '../shared/use-is-descendent-of-single-product-template';
-
-type UnsupportedAligments = 'wide' | 'full';
-type AllowedAlignments = Exclude< BlockAlignment, UnsupportedAligments >;
-
-interface BlockAttributes {
- textAlign?: AllowedAlignments;
-}
-
-interface Attributes {
- textAlign: 'left' | 'center' | 'right';
- isDescendentOfSingleProduct: boolean;
- isDescendentOfSingleProductBlock: boolean;
- productId: number;
-}
-
-interface Context {
- queryId: number;
-}
-
-interface Props {
- attributes: Attributes;
- setAttributes: (
- attributes: Partial< BlockAttributes > & Record< string, unknown >
- ) => void;
- context: Context;
-}
-
-const PriceEdit = ( {
- attributes,
- setAttributes,
- context,
-}: Props ): JSX.Element => {
- const blockProps = useBlockProps();
- const blockAttrs = {
- ...attributes,
- ...context,
- };
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
-
- let { isDescendentOfSingleProductTemplate } =
- useIsDescendentOfSingleProductTemplate( { isDescendentOfQueryLoop } );
-
- if ( isDescendentOfQueryLoop ) {
- isDescendentOfSingleProductTemplate = false;
- }
-
- useEffect(
- () =>
- setAttributes( {
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductTemplate,
- } ),
- [
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductTemplate,
- setAttributes,
- ]
- );
-
- return (
- <>
-
- {
- setAttributes( { textAlign } );
- } }
- />
-
-
-
-
- >
- );
-};
-
-export default PriceEdit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/index.tsx
deleted file mode 100644
index 6447673b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/index.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import edit from './edit';
-import attributes from './attributes';
-import { supports } from './supports';
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-
-const { ancestor, ...configuration } = sharedConfig;
-
-const blockConfig = {
- ...configuration,
- apiVersion: 2,
- title,
- description,
- usesContext: [ 'query', 'queryId', 'postId' ],
- icon: { src: icon },
- attributes,
- supports,
- edit,
-};
-
-registerBlockType( 'woocommerce/product-price', blockConfig );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/supports.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/supports.ts
deleted file mode 100644
index 3a1f18fd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/supports.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import { __experimentalGetSpacingClassesAndStyles } from '@wordpress/block-editor';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-
-export const supports = {
- ...sharedConfig.supports,
- ...( isFeaturePluginBuild() && {
- color: {
- text: true,
- background: true,
- link: false,
- __experimentalSkipSerialization: true,
- },
- typography: {
- fontSize: true,
- lineHeight: true,
- __experimentalFontFamily: true,
- __experimentalFontWeight: true,
- __experimentalFontStyle: true,
- __experimentalSkipSerialization: true,
- __experimentalLetterSpacing: true,
- },
- __experimentalSelector:
- '.wp-block-woocommerce-product-price .wc-block-components-product-price',
- } ),
- ...( typeof __experimentalGetSpacingClassesAndStyles === 'function' && {
- spacing: {
- margin: true,
- padding: true,
- },
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/types.ts
deleted file mode 100644
index bfbdb998..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/price/types.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface BlockAttributes {
- productId?: number;
- className?: string;
- textAlign?: 'left' | 'center' | 'right';
- isDescendentOfQueryLoop?: boolean;
- isDescendentOfSingleProductTemplate?: boolean;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.json
deleted file mode 100644
index 5860df01..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "name": "woocommerce/product-details",
- "version": "1.0.0",
- "icon": "info",
- "title": "Product Details",
- "description": "Display a product's description, attributes, and reviews.",
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "supports": {
- "align": true,
- "spacing": {
- "margin": true
- }
- },
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.tsx
deleted file mode 100644
index 2d2f95bf..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/block.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { __ } from '@wordpress/i18n';
-import { useBlockProps } from '@wordpress/block-editor';
-
-interface SingleProductTab {
- id: string;
- title: string;
- active: boolean;
- content: string | undefined;
-}
-
-const ProductTabTitle = ( {
- id,
- title,
- active,
-}: Pick< SingleProductTab, 'id' | 'title' | 'active' > ) => {
- return (
-
- { title }
-
- );
-};
-
-const ProductTabContent = ( {
- id,
- content,
-}: Pick< SingleProductTab, 'id' | 'content' > ) => {
- return (
-
- { content }
-
- );
-};
-
-export const SingleProductDetails = () => {
- const blockProps = useBlockProps();
- const productTabs = [
- {
- id: 'description',
- title: 'Description',
- active: true,
- content: __(
- 'This block lists description, attributes and reviews for a single product.',
- 'woo-gutenberg-products-block'
- ),
- },
- {
- id: 'additional_information',
- title: 'Additional Information',
- active: false,
- },
- { id: 'reviews', title: 'Reviews', active: false },
- ];
- const tabsTitle = productTabs.map( ( { id, title, active } ) => (
-
- ) );
- const tabsContent = productTabs.map( ( { id, content } ) => (
-
- ) );
-
- return (
-
- );
-};
-
-export default SingleProductDetails;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/edit.tsx
deleted file mode 100644
index 6b8e4ab9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/edit.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-import { Disabled } from '@wordpress/components';
-import type { BlockEditProps } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import { Attributes } from './types';
-
-const Edit = ( { attributes }: BlockEditProps< Attributes > ) => {
- const { className } = attributes;
- const blockProps = useBlockProps( {
- className,
- } );
-
- return (
- <>
-
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/index.tsx
deleted file mode 100644
index 4a71b996..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/index.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockSingleProductTemplate } from '@woocommerce/atomic-utils';
-import { Icon } from '@wordpress/icons';
-import { productDetails } from '@woocommerce/icons';
-
-/**
- * Internal dependencies
- */
-import metadata from './block.json';
-import edit from './edit';
-import './style.scss';
-
-registerBlockSingleProductTemplate( {
- blockName: metadata.name,
- // @ts-expect-error: `metadata` currently does not have a type definition in WordPress core
- blockMetadata: metadata,
- blockSettings: {
- icon: {
- src: (
-
- ),
- },
- edit,
- },
- isAvailableOnPostEditor: false,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/style.scss
deleted file mode 100644
index 6e6405d4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/style.scss
+++ /dev/null
@@ -1,38 +0,0 @@
-.wp-block-woocommerce-product-details {
- ul.wc-tabs {
- list-style: none;
- padding: 0 0 0 1em;
- margin: 0 0 1.618em;
- overflow: hidden;
- position: relative;
- border-bottom: 1px solid $gray-200;
-
- li {
- border: 1px solid $gray-200;
- display: inline-block;
- position: relative;
- z-index: 0;
- border-radius: $universal-border-radius $universal-border-radius 0 0;
- margin: 0;
- padding: 0.5em 1em;
-
- a {
- display: inline-block;
- font-weight: 700;
- text-decoration: none;
-
- &:hover {
- text-decoration: none;
- }
- }
-
- &.active {
- z-index: 2;
-
- a {
- text-shadow: inherit;
- }
- }
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/types.ts
deleted file mode 100644
index aa9b37b3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-details/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface Attributes {
- className?: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/block.json
deleted file mode 100644
index c69250aa..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/block.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "woocommerce/product-image-gallery",
- "version": "1.0.0",
- "title": "Product Image Gallery",
- "icon": "gallery",
- "description": "Display a product's images.",
- "category": "woocommerce",
- "supports": {
- "align": true,
- "multiple": false
- },
- "keywords": [ "WooCommerce" ],
- "usesContext": [ "postId", "postType", "queryId" ],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit.tsx
deleted file mode 100644
index b4f50c9c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/edit.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * External dependencies
- */
-import { WC_BLOCKS_IMAGE_URL } from '@woocommerce/block-settings';
-import { isEmptyObject } from '@woocommerce/types';
-import { useBlockProps } from '@wordpress/block-editor';
-import { BlockAttributes } from '@wordpress/blocks';
-import { Disabled } from '@wordpress/components';
-import type { BlockEditProps } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import './editor.scss';
-
-const Placeholder = () => {
- return (
-
-
-
- { [ ...Array( 4 ).keys() ].map( ( index ) => {
- return (
-
- );
- } ) }
-
-
- );
-};
-
-type Context = {
- postId: string;
- postType: string;
- queryId: string;
-};
-
-interface Props extends BlockEditProps< BlockAttributes > {
- context: Context;
-}
-
-const Edit = ( { context }: Props ) => {
- const blockProps = useBlockProps();
-
- if ( isEmptyObject( context ) ) {
- return (
-
- );
- }
- // We have work on this case when we will work on the Single Product block.
- return <>>;
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/editor.scss
deleted file mode 100644
index 5b04e305..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/editor.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-.wc-block-editor-product-gallery {
- img {
- max-width: 500px;
- width: 100%;
- height: auto;
- }
- .wc-block-editor-product-gallery__other-images {
- img {
- width: 100px;
- height: 100px;
- margin: 5px;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts
deleted file mode 100644
index 9b7cb2ab..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * External dependencies
- */
-import { gallery as icon } from '@wordpress/icons';
-import { registerBlockSingleProductTemplate } from '@woocommerce/atomic-utils';
-
-/**
- * Internal dependencies
- */
-import edit from './edit';
-import metadata from './block.json';
-import './style.scss';
-
-registerBlockSingleProductTemplate( {
- blockName: metadata.name,
- // @ts-expect-error: `metadata` currently does not have a type definition in WordPress core
- blockMetadata: metadata,
- blockSettings: {
- icon,
- // @ts-expect-error `edit` can be extended to include other attributes
- edit,
- },
- isAvailableOnPostEditor: false,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/style.scss
deleted file mode 100644
index e936b10f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-image-gallery/style.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-.woocommerce .wp-block-woocommerce-product-image-gallery {
- position: relative;
- // This is necessary to calculate the correct width of the gallery. https://www.lockedownseo.com/parent-div-100-height-child-floated-elements/#:~:text=Solution%20%232%3A%20Float%20Parent%20Container
- clear: both;
- max-width: 512px;
-
- span.onsale {
- right: unset;
- z-index: 1;
- left: -1rem;
- }
-}
-
-// This is necessary to calculate the correct width of the gallery. https://www.lockedownseo.com/parent-div-100-height-child-floated-elements/#:~:text=Solution%20%232%3A%20Float%20Parent%20Container
-.woocommerce .wp-block-woocommerce-product-image-gallery::after {
- clear: both;
- content: "";
- display: table;
-}
-
-
-.woocommerce .wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery.images {
- width: 100%;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/block.json
deleted file mode 100644
index 2a3c806b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/block.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "woocommerce/product-meta",
- "version": "1.0.0",
- "title": "Product Meta",
- "icon": "product",
- "description": "Display a product’s SKU, categories, tags, and more.",
- "category": "woocommerce",
- "supports": {
- "align": true,
- "reusable": false
- },
- "keywords": [ "WooCommerce" ],
- "usesContext": [ "postId", "postType", "queryId" ],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/edit.tsx
deleted file mode 100644
index a189cea2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/edit.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * External dependencies
- */
-import { InnerBlocks, useBlockProps } from '@wordpress/block-editor';
-import { InnerBlockTemplate } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import './editor.scss';
-import { useIsDescendentOfSingleProductTemplate } from '../shared/use-is-descendent-of-single-product-template';
-
-const Edit = () => {
- const isDescendentOfSingleProductTemplate =
- useIsDescendentOfSingleProductTemplate();
-
- const TEMPLATE: InnerBlockTemplate[] = [
- [
- 'core/group',
- { layout: { type: 'flex', flexWrap: 'nowrap' } },
- [
- [
- 'woocommerce/product-sku',
- {
- isDescendentOfSingleProductTemplate,
- },
- ],
- [
- 'core/post-terms',
- {
- prefix: 'Category: ',
- term: 'product_cat',
- },
- ],
- [
- 'core/post-terms',
- {
- prefix: 'Tags: ',
- term: 'product_tag',
- },
- ],
- ],
- ],
- ];
- const blockProps = useBlockProps();
-
- return (
-
-
-
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/editor.scss
deleted file mode 100644
index b3872dae..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/editor.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.wc-block-editor-related-products__notice {
- margin: 10px auto;
- max-width: max-content;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/index.tsx
deleted file mode 100644
index f7d5ffff..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/index.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockSingleProductTemplate } from '@woocommerce/atomic-utils';
-import { Icon } from '@wordpress/icons';
-import { productMeta } from '@woocommerce/icons';
-
-/**
- * Internal dependencies
- */
-import edit from './edit';
-import save from './save';
-import metadata from './block.json';
-
-registerBlockSingleProductTemplate( {
- blockName: metadata.name,
- // @ts-expect-error: `metadata` currently does not have a type definition in WordPress core
- blockMetadata: metadata,
- blockSettings: {
- edit,
- save,
- icon: {
- src: (
-
- ),
- },
- ancestor: [ 'woocommerce/single-product' ],
- },
- isAvailableOnPostEditor: true,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/save.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/save.tsx
deleted file mode 100644
index 0feb6d8f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-meta/save.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { InnerBlocks, useBlockProps } from '@wordpress/block-editor';
-
-const Save = () => {
- const blockProps = useBlockProps.save();
-
- return (
-
- { /* @ts-expect-error: `InnerBlocks.Content` is a component that is typed in WordPress core*/ }
-
-
- );
-};
-
-export default Save;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.json
deleted file mode 100644
index cc9d9535..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "woocommerce/product-reviews",
- "version": "1.0.0",
- "icon": "admin-comments",
- "title": "Product Reviews",
- "description": "A block that shows the reviews for a product.",
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "supports": {},
- "attributes": {},
- "usesContext": [ "postId" ],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.tsx
deleted file mode 100644
index da8d08ae..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/block.tsx
+++ /dev/null
@@ -1,69 +0,0 @@
-// We are using anchors as mere placeholders to replicate the front-end look.
-/* eslint-disable jsx-a11y/anchor-is-valid */
-
-/**
- * External dependencies
- */
-import { WC_BLOCKS_IMAGE_URL } from '@woocommerce/block-settings';
-import { __ } from '@wordpress/i18n';
-import { useBlockProps } from '@wordpress/block-editor';
-import { Notice } from '@wordpress/components';
-
-export const ProductReviews = () => {
- const blockProps = useBlockProps();
-
- return (
-
-
-
- { __(
- 'The products reviews and the form to add a new review will be displayed here according to your theme. The look you see here is not representative of what is going to look like, this is just a placeholder.',
- 'woo-gutenberg-products-block'
- ) }
-
-
-
- { __(
- '3 reviews for this product',
- 'woo-gutenberg-products-block'
- ) }
-
-
-
{ __( 'Add a review', 'woo-gutenberg-products-block' ) }
-
-
-
- { __(
- 'Your rating *',
- 'woo-gutenberg-products-block'
- ) }
-
-
-
-
-
- { __(
- 'Your review *',
- 'woo-gutenberg-products-block'
- ) }
-
-
-
-
-
-
- );
-};
-
-export default ProductReviews;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/edit.tsx
deleted file mode 100644
index 6b8e4ab9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/edit.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-import { Disabled } from '@wordpress/components';
-import type { BlockEditProps } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import { Attributes } from './types';
-
-const Edit = ( { attributes }: BlockEditProps< Attributes > ) => {
- const { className } = attributes;
- const blockProps = useBlockProps( {
- className,
- } );
-
- return (
- <>
-
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/index.tsx
deleted file mode 100644
index 3dd9446b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/index.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockSingleProductTemplate } from '@woocommerce/atomic-utils';
-
-/**
- * Internal dependencies
- */
-import metadata from './block.json';
-import edit from './edit';
-import './style.scss';
-
-registerBlockSingleProductTemplate( {
- blockName: metadata.name,
- // @ts-expect-error: `metadata` currently does not have a type definition in WordPress core
- blockMetadata: metadata,
- blockSettings: {
- edit,
- },
- isAvailableOnPostEditor: false,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/style.scss
deleted file mode 100644
index c7cff596..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/style.scss
+++ /dev/null
@@ -1,53 +0,0 @@
-.wp-block-woocommerce-product-reviews {
- img {
- max-width: 600px;
- }
-
- .submit {
- margin-top: 2rem;
- }
-}
-
-.wp-block-woocommerce-product-reviews__editor__row {
- align-items: center;
- display: flex;
- gap: 2rem;
-
- > span {
- flex-basis: 20%;
- }
-
- textarea,
- .wp-block-woocommerce-product-reviews__editor__stars {
- flex-grow: 1;
- margin-right: 1rem;
- }
-
- textarea {
- flex-grow: 1;
- height: 8rem;
- }
-}
-
-.wp-block-woocommerce-product-reviews__editor__stars {
- display: inline-block;
- overflow: hidden;
- position: relative;
- width: 5.3em;
- height: 1.618em;
- line-height: 1.618;
- font-size: 1em;
- /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */
- font-family: star;
- font-weight: 400;
-
- &::before {
- color: inherit;
- content: "SSSSS";
- position: absolute;
- left: 0;
- right: 0;
- top: 0;
- white-space: nowrap;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/types.ts
deleted file mode 100644
index aa9b37b3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/product-reviews/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface Attributes {
- className?: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json
deleted file mode 100644
index 185d8884..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "woocommerce/product-rating-counter",
- "version": "1.0.0",
- "title": "Product Rating Counter",
- "description": "Display the review count of a product",
- "attributes": {
- "productId": {
- "type": "number",
- "default": 0
- },
- "isDescendentOfQueryLoop": {
- "type": "boolean",
- "default": false
- },
- "textAlign": {
- "type": "string",
- "default": ""
- },
- "isDescendentOfSingleProductBlock": {
- "type": "boolean",
- "default": false
- },
- "isDescendentOfSingleProductTemplate": {
- "type": "boolean",
- "default": false
- }
- },
- "usesContext": [ "query", "queryId", "postId" ],
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "supports": {
- "align": true
- },
- "ancestor": [ "woocommerce/single-product" ],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.tsx
deleted file mode 100644
index 96d117f8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/block.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * External dependencies
- */
-import { __, _n, sprintf } from '@wordpress/i18n';
-import classnames from 'classnames';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import { isNumber, ProductResponseItem } from '@woocommerce/types';
-import { Disabled } from '@wordpress/components';
-
-const getRatingCount = ( product: ProductResponseItem ) => {
- const count = isNumber( product.review_count )
- ? product.review_count
- : parseInt( product.review_count, 10 );
-
- return Number.isFinite( count ) && count > 0 ? count : 0;
-};
-
-const ReviewsCount = ( props: { reviews: number } ): JSX.Element => {
- const { reviews } = props;
-
- const reviewsCount = reviews
- ? sprintf(
- /* translators: %s is referring to the total of reviews for a product */
- _n(
- '(%s customer review)',
- '(%s customer reviews)',
- reviews,
- 'woo-gutenberg-products-block'
- ),
- reviews
- )
- : __( '(X customer reviews)', 'woo-gutenberg-products-block' );
-
- return (
-
-
- { reviewsCount }
-
-
- );
-};
-
-type ProductRatingCounterProps = {
- className?: string;
- textAlign?: string;
- isDescendentOfSingleProductBlock: boolean;
- isDescendentOfQueryLoop: boolean;
- postId: number;
- productId: number;
- shouldDisplayMockedReviewsWhenProductHasNoReviews: boolean;
-};
-
-export const Block = (
- props: ProductRatingCounterProps
-): JSX.Element | undefined => {
- const { textAlign, shouldDisplayMockedReviewsWhenProductHasNoReviews } =
- props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
- const reviews = getRatingCount( product );
-
- const className = classnames(
- styleProps.className,
- 'wc-block-components-product-rating-counter',
- {
- [ `${ parentClassName }__product-rating` ]: parentClassName,
- [ `has-text-align-${ textAlign }` ]: textAlign,
- }
- );
-
- if ( reviews || shouldDisplayMockedReviewsWhenProductHasNoReviews ) {
- return (
-
- );
- }
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/edit.tsx
deleted file mode 100644
index 723bd77f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/edit.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * External dependencies
- */
-import {
- AlignmentToolbar,
- BlockControls,
- useBlockProps,
-} from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-import { useEffect } from '@wordpress/element';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import { BlockAttributes } from './types';
-import { useIsDescendentOfSingleProductBlock } from '../shared/use-is-descendent-of-single-product-block';
-import { useIsDescendentOfSingleProductTemplate } from '../shared/use-is-descendent-of-single-product-template';
-
-const Edit = (
- props: BlockEditProps< BlockAttributes > & { context: Context }
-): JSX.Element => {
- const { attributes, setAttributes, context } = props;
- const blockProps = useBlockProps( {
- className: 'wp-block-woocommerce-product-rating-counter',
- } );
- const blockAttrs = {
- ...attributes,
- ...context,
- shouldDisplayMockedReviewsWhenProductHasNoReviews: true,
- };
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
- const { isDescendentOfSingleProductBlock } =
- useIsDescendentOfSingleProductBlock( {
- blockClientId: blockProps?.id,
- } );
- let { isDescendentOfSingleProductTemplate } =
- useIsDescendentOfSingleProductTemplate();
-
- if ( isDescendentOfQueryLoop || isDescendentOfSingleProductBlock ) {
- isDescendentOfSingleProductTemplate = false;
- }
-
- useEffect( () => {
- setAttributes( {
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductBlock,
- isDescendentOfSingleProductTemplate,
- } );
- }, [
- setAttributes,
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductBlock,
- isDescendentOfSingleProductTemplate,
- ] );
-
- return (
- <>
-
- {
- setAttributes( { textAlign: newAlign || '' } );
- } }
- />
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/index.tsx
deleted file mode 100644
index 112bf44b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/index.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import { Icon, starFilled } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import metadata from './block.json';
-import edit from './edit';
-import { supports } from './support';
-
-registerBlockType( metadata, {
- icon: {
- src: (
-
- ),
- },
- supports,
- edit,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/support.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/support.ts
deleted file mode 100644
index 94988280..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/support.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/* eslint-disable @wordpress/no-unsafe-wp-apis */
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-
-export const supports = {
- ...( isFeaturePluginBuild() && {
- color: {
- text: false,
- background: false,
- link: true,
- },
- spacing: {
- margin: true,
- padding: true,
- },
- typography: {
- fontSize: true,
- __experimentalSkipSerialization: true,
- },
- __experimentalSelector: '.wc-block-components-product-rating-counter',
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/types.ts
deleted file mode 100644
index f6f8e529..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-counter/types.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface BlockAttributes {
- productId: number;
- isDescendentOfQueryLoop: boolean;
- isDescendentOfSingleProductBlock: boolean;
- isDescendentOfSingleProductTemplate: boolean;
- textAlign: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json
deleted file mode 100644
index b1f9177e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "woocommerce/product-rating-stars",
- "version": "1.0.0",
- "title": "Product Rating Stars",
- "description": "Display the average rating of a product with stars",
- "attributes": {
- "productId": {
- "type": "number",
- "default": 0
- },
- "isDescendentOfQueryLoop": {
- "type": "boolean",
- "default": false
- },
- "textAlign": {
- "type": "string",
- "default": ""
- },
- "isDescendentOfSingleProductBlock": {
- "type": "boolean",
- "default": false
- },
- "isDescendentOfSingleProductTemplate": {
- "type": "boolean",
- "default": false
- }
- },
- "usesContext": [ "query", "queryId", "postId" ],
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "supports": {
- "align": true
- },
- "ancestor": [ "woocommerce/single-product" ],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.tsx
deleted file mode 100644
index 8716fa61..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/block.tsx
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * External dependencies
- */
-import { __, _n, sprintf } from '@wordpress/i18n';
-import classnames from 'classnames';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import { isNumber, ProductResponseItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-type RatingProps = {
- reviews: number;
- rating: number;
- parentClassName?: string;
-};
-
-const getAverageRating = (
- product: Omit< ProductResponseItem, 'average_rating' > & {
- average_rating: string;
- }
-) => {
- const rating = parseFloat( product.average_rating );
-
- return Number.isFinite( rating ) && rating > 0 ? rating : 0;
-};
-
-const getRatingCount = ( product: ProductResponseItem ) => {
- const count = isNumber( product.review_count )
- ? product.review_count
- : parseInt( product.review_count, 10 );
-
- return Number.isFinite( count ) && count > 0 ? count : 0;
-};
-
-const getStarStyle = ( rating: number ) => ( {
- width: ( rating / 5 ) * 100 + '%',
-} );
-
-const NoRating = ( { parentClassName }: { parentClassName: string } ) => {
- const starStyle = getStarStyle( 0 );
-
- return (
-
-
-
-
-
{ __( 'No Reviews', 'woo-gutenberg-products-block' ) }
-
- );
-};
-
-const Rating = ( props: RatingProps ): JSX.Element => {
- const { rating, reviews, parentClassName } = props;
-
- const starStyle = getStarStyle( rating );
-
- const ratingText = sprintf(
- /* translators: %f is referring to the average rating value */
- __( 'Rated %f out of 5', 'woo-gutenberg-products-block' ),
- rating
- );
-
- const ratingHTML = {
- __html: sprintf(
- /* translators: %1$s is referring to the average rating value, %2$s is referring to the number of ratings */
- _n(
- 'Rated %1$s out of 5 based on %2$s customer rating',
- 'Rated %1$s out of 5 based on %2$s customer ratings',
- reviews,
- 'woo-gutenberg-products-block'
- ),
- sprintf( '%f ', rating ),
- sprintf( '%d ', reviews )
- ),
- };
- return (
-
-
-
- );
-};
-
-interface ProductRatingStarsProps {
- className?: string;
- textAlign?: string;
- isDescendentOfSingleProductBlock: boolean;
- isDescendentOfQueryLoop: boolean;
- postId: number;
- productId: number;
- shouldDisplayMockedReviewsWhenProductHasNoReviews: boolean;
-}
-
-export const Block = ( props: ProductRatingStarsProps ): JSX.Element | null => {
- const { textAlign, shouldDisplayMockedReviewsWhenProductHasNoReviews } =
- props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
- const rating = getAverageRating( product );
- const reviews = getRatingCount( product );
-
- const className = classnames(
- styleProps.className,
- 'wc-block-components-product-rating-stars',
- {
- [ `${ parentClassName }__product-rating` ]: parentClassName,
- [ `has-text-align-${ textAlign }` ]: textAlign,
- }
- );
- const mockedRatings = shouldDisplayMockedReviewsWhenProductHasNoReviews ? (
-
- ) : null;
-
- const content = reviews ? (
-
- ) : (
- mockedRatings
- );
-
- return (
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/edit.tsx
deleted file mode 100644
index 7094c808..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/edit.tsx
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * External dependencies
- */
-import {
- AlignmentToolbar,
- BlockControls,
- useBlockProps,
-} from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-import { useEffect } from '@wordpress/element';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import { BlockAttributes } from './types';
-import { useIsDescendentOfSingleProductBlock } from '../shared/use-is-descendent-of-single-product-block';
-import { useIsDescendentOfSingleProductTemplate } from '../shared/use-is-descendent-of-single-product-template';
-
-const Edit = (
- props: BlockEditProps< BlockAttributes > & { context: Context }
-): JSX.Element => {
- const { attributes, setAttributes, context } = props;
- const blockProps = useBlockProps( {
- className: 'wp-block-woocommerce-product-rating',
- } );
- const blockAttrs = {
- ...attributes,
- ...context,
- shouldDisplayMockedReviewsWhenProductHasNoReviews: true,
- };
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
- const { isDescendentOfSingleProductBlock } =
- useIsDescendentOfSingleProductBlock( {
- blockClientId: blockProps?.id,
- } );
- let { isDescendentOfSingleProductTemplate } =
- useIsDescendentOfSingleProductTemplate();
-
- if ( isDescendentOfQueryLoop || isDescendentOfSingleProductBlock ) {
- isDescendentOfSingleProductTemplate = false;
- }
-
- useEffect( () => {
- setAttributes( {
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductBlock,
- isDescendentOfSingleProductTemplate,
- } );
- }, [
- setAttributes,
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductBlock,
- isDescendentOfSingleProductTemplate,
- ] );
-
- return (
- <>
-
- {
- setAttributes( { textAlign: newAlign || '' } );
- } }
- />
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/index.tsx
deleted file mode 100644
index 112bf44b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/index.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import { Icon, starFilled } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import metadata from './block.json';
-import edit from './edit';
-import { supports } from './support';
-
-registerBlockType( metadata, {
- icon: {
- src: (
-
- ),
- },
- supports,
- edit,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/style.scss
deleted file mode 100644
index 56a3a4f3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/style.scss
+++ /dev/null
@@ -1,107 +0,0 @@
-.wc-block-components-product-rating-stars {
- display: block;
- line-height: 1;
-
- &__stars {
- display: inline-block;
- overflow: hidden;
- position: relative;
- width: 5.3em;
- height: 1.618em;
- line-height: 1.618;
- font-size: 1em;
- /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */
- font-family: star;
- font-weight: 400;
- text-align: left;
-
- &::before {
- content: "\53\53\53\53\53";
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- opacity: 0.5;
- color: inherit;
- white-space: nowrap;
- }
- span {
- overflow: hidden;
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- color: inherit;
- padding-top: 1.5em;
- }
- span::before {
- content: "\53\53\53\53\53";
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- color: inherit;
- white-space: nowrap;
- }
- }
-
- &__link {
- display: inline-block;
- height: 1.618em;
- width: 100%;
- text-align: inherit;
- @include font-size(small);
- }
-
- .wc-block-all-products & {
- margin-top: 0;
- margin-bottom: $gap-small;
- }
-
- &__norating-container {
- display: inline-flex;
- flex-direction: row;
- align-items: center;
- gap: $gap-smaller;
- }
-
- &__norating {
- display: inline-block;
- overflow: hidden;
- position: relative;
- width: 1.5em;
- height: 1.618em;
- line-height: 1.618;
- font-size: 1em;
- /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */
- font-family: star;
- font-weight: 400;
- -webkit-text-stroke: 2px var(--wp--preset--color--black, #000);
- &::before {
- content: "\53";
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- color: transparent;
- white-space: nowrap;
- text-align: center;
- }
- }
-}
-
-.wp-block-woocommerce-single-product {
- .wc-block-components-product-rating__stars {
- margin: 0;
- }
-}
-
-.wc-block-all-products,
-.wp-block-query {
- .is-loading {
- .wc-block-components-product-rating {
- @include placeholder();
- width: 7em;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/support.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/support.ts
deleted file mode 100644
index 4e30a74b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/support.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/* eslint-disable @wordpress/no-unsafe-wp-apis */
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-
-export const supports = {
- ...( isFeaturePluginBuild() && {
- color: {
- text: true,
- background: false,
- link: false,
- __experimentalSkipSerialization: true,
- },
- spacing: {
- margin: true,
- padding: true,
- },
- typography: {
- fontSize: true,
- __experimentalSkipSerialization: true,
- },
- __experimentalSelector: '.wc-block-components-product-rating',
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/types.ts
deleted file mode 100644
index f6f8e529..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating-stars/types.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface BlockAttributes {
- productId: number;
- isDescendentOfQueryLoop: boolean;
- isDescendentOfSingleProductBlock: boolean;
- isDescendentOfSingleProductTemplate: boolean;
- textAlign: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.json
deleted file mode 100644
index 78496aac..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.json
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "name": "woocommerce/product-rating",
- "version": "1.0.0",
- "icon": "info",
- "title": "Product Rating",
- "description": "Display the average rating of a product.",
- "attributes": {
- "productId": {
- "type": "number",
- "default": 0
- },
- "isDescendentOfQueryLoop": {
- "type": "boolean",
- "default": false
- },
- "textAlign": {
- "type": "string",
- "default": ""
- },
- "isDescendentOfSingleProductBlock": {
- "type": "boolean",
- "default": false
- },
- "isDescendentOfSingleProductTemplate": {
- "type": "boolean",
- "default": false
- }
- },
- "usesContext": [ "query", "queryId", "postId" ],
- "category": "woocommerce",
- "keywords": [ "WooCommerce" ],
- "supports": {
- "align": true
- },
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.tsx
deleted file mode 100644
index cd1dded9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/block.tsx
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * External dependencies
- */
-import { __, _n, sprintf } from '@wordpress/i18n';
-import classnames from 'classnames';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import { isNumber, ProductResponseItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-type RatingProps = {
- reviews: number;
- rating: number;
- parentClassName?: string;
-};
-
-const getAverageRating = (
- product: Omit< ProductResponseItem, 'average_rating' > & {
- average_rating: string;
- }
-) => {
- const rating = parseFloat( product.average_rating );
-
- return Number.isFinite( rating ) && rating > 0 ? rating : 0;
-};
-
-const getRatingCount = ( product: ProductResponseItem ) => {
- const count = isNumber( product.review_count )
- ? product.review_count
- : parseInt( product.review_count, 10 );
-
- return Number.isFinite( count ) && count > 0 ? count : 0;
-};
-
-const getStarStyle = ( rating: number ) => ( {
- width: ( rating / 5 ) * 100 + '%',
-} );
-
-const NoRating = ( { parentClassName }: { parentClassName: string } ) => {
- const starStyle = getStarStyle( 0 );
-
- return (
-
-
-
-
-
{ __( 'No Reviews', 'woo-gutenberg-products-block' ) }
-
- );
-};
-
-const Rating = ( props: RatingProps ): JSX.Element => {
- const { rating, reviews, parentClassName } = props;
-
- const starStyle = getStarStyle( rating );
-
- const ratingText = sprintf(
- /* translators: %f is referring to the average rating value */
- __( 'Rated %f out of 5', 'woo-gutenberg-products-block' ),
- rating
- );
-
- const ratingHTML = {
- __html: sprintf(
- /* translators: %1$s is referring to the average rating value, %2$s is referring to the number of ratings */
- _n(
- 'Rated %1$s out of 5 based on %2$s customer rating',
- 'Rated %1$s out of 5 based on %2$s customer ratings',
- reviews,
- 'woo-gutenberg-products-block'
- ),
- sprintf( '%f ', rating ),
- sprintf( '%d ', reviews )
- ),
- };
- return (
-
-
-
- );
-};
-
-const ReviewsCount = ( props: { reviews: number } ): JSX.Element => {
- const { reviews } = props;
-
- const reviewsCount = sprintf(
- /* translators: %s is referring to the total of reviews for a product */
- _n(
- '(%s customer review)',
- '(%s customer reviews)',
- reviews,
- 'woo-gutenberg-products-block'
- ),
- reviews
- );
-
- return (
-
- { reviewsCount }
-
- );
-};
-
-type ProductRatingProps = {
- className?: string;
- textAlign?: string;
- isDescendentOfSingleProductBlock: boolean;
- isDescendentOfQueryLoop: boolean;
- postId: number;
- productId: number;
- shouldDisplayMockedReviewsWhenProductHasNoReviews: boolean;
-};
-
-export const Block = ( props: ProductRatingProps ): JSX.Element | undefined => {
- const {
- textAlign,
- isDescendentOfSingleProductBlock,
- shouldDisplayMockedReviewsWhenProductHasNoReviews,
- } = props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
- const rating = getAverageRating( product );
- const reviews = getRatingCount( product );
-
- const className = classnames(
- styleProps.className,
- 'wc-block-components-product-rating',
- {
- [ `${ parentClassName }__product-rating` ]: parentClassName,
- [ `has-text-align-${ textAlign }` ]: textAlign,
- }
- );
- const mockedRatings = shouldDisplayMockedReviewsWhenProductHasNoReviews ? (
-
- ) : null;
-
- const content = reviews ? (
-
- ) : (
- mockedRatings
- );
-
- if ( reviews || shouldDisplayMockedReviewsWhenProductHasNoReviews ) {
- return (
-
-
- { content }
- { reviews && isDescendentOfSingleProductBlock ? (
-
- ) : null }
-
-
- );
- }
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/constants.tsx
deleted file mode 100644
index 80ef001d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/constants.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { starEmpty, Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'Product Rating',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Display the average rating of a product.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/edit.tsx
deleted file mode 100644
index f4c8a1b0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/edit.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * External dependencies
- */
-import {
- AlignmentToolbar,
- BlockControls,
- useBlockProps,
-} from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-import { useEffect } from '@wordpress/element';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import { BlockAttributes } from './types';
-import './editor.scss';
-import { useIsDescendentOfSingleProductBlock } from '../shared/use-is-descendent-of-single-product-block';
-import { useIsDescendentOfSingleProductTemplate } from '../shared/use-is-descendent-of-single-product-template';
-
-const Edit = (
- props: BlockEditProps< BlockAttributes > & { context: Context }
-): JSX.Element => {
- const { attributes, setAttributes, context } = props;
- const blockProps = useBlockProps( {
- className: 'wp-block-woocommerce-product-rating',
- } );
- const blockAttrs = {
- ...attributes,
- ...context,
- shouldDisplayMockedReviewsWhenProductHasNoReviews: true,
- };
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
- const { isDescendentOfSingleProductBlock } =
- useIsDescendentOfSingleProductBlock( {
- blockClientId: blockProps?.id,
- } );
- let { isDescendentOfSingleProductTemplate } =
- useIsDescendentOfSingleProductTemplate();
-
- if ( isDescendentOfQueryLoop || isDescendentOfSingleProductBlock ) {
- isDescendentOfSingleProductTemplate = false;
- }
-
- useEffect( () => {
- setAttributes( {
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductBlock,
- isDescendentOfSingleProductTemplate,
- } );
- }, [
- setAttributes,
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductBlock,
- isDescendentOfSingleProductTemplate,
- ] );
-
- return (
- <>
-
- {
- setAttributes( { textAlign: newAlign || '' } );
- } }
- />
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/editor.scss
deleted file mode 100644
index 1b7514bc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/editor.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.wc-block-components-product-rating__link {
- pointer-events: none;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/index.ts
deleted file mode 100644
index 0d06baac..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * External dependencies
- */
-import type { BlockConfiguration } from '@wordpress/blocks';
-import { registerBlockSingleProductTemplate } from '@woocommerce/atomic-utils';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import edit from './edit';
-import { BLOCK_ICON as icon } from './constants';
-import metadata from './block.json';
-import { supports } from './support';
-
-const blockConfig: BlockConfiguration = {
- ...sharedConfig,
- ancestor: [
- 'woocommerce/all-products',
- 'woocommerce/single-product',
- 'core/post-template',
- 'woocommerce/product-template',
- ],
- icon: { src: icon },
- supports,
- edit,
-};
-
-registerBlockSingleProductTemplate( {
- blockName: 'woocommerce/product-rating',
- blockMetadata: metadata,
- blockSettings: blockConfig,
- isAvailableOnPostEditor: true,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/style.scss
deleted file mode 100644
index 37ad3a77..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/style.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.wc-block-components-product-rating {
- .wc-block-components-product-rating__container {
- > * {
- vertical-align: middle;
- }
- }
-
- .wc-block-components-product-rating__stars {
- display: inline-block;
- margin: 0;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/support.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/support.ts
deleted file mode 100644
index 59b63c04..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/support.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/* eslint-disable @wordpress/no-unsafe-wp-apis */
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import { __experimentalGetSpacingClassesAndStyles } from '@wordpress/block-editor';
-
-export const supports = {
- ...( isFeaturePluginBuild() && {
- color: {
- text: true,
- background: false,
- link: false,
- __experimentalSkipSerialization: true,
- },
- spacing: {
- margin: true,
- padding: true,
- },
- typography: {
- fontSize: true,
- __experimentalSkipSerialization: true,
- },
- __experimentalSelector: '.wc-block-components-product-rating',
- } ),
- ...( ! isFeaturePluginBuild() &&
- typeof __experimentalGetSpacingClassesAndStyles === 'function' && {
- spacing: {
- margin: true,
- },
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/types.ts
deleted file mode 100644
index f6f8e529..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/rating/types.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface BlockAttributes {
- productId: number;
- isDescendentOfQueryLoop: boolean;
- isDescendentOfSingleProductBlock: boolean;
- isDescendentOfSingleProductTemplate: boolean;
- textAlign: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/block.json b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/block.json
deleted file mode 100644
index 1c02dad1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/block.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "woocommerce/related-products",
- "version": "1.0.0",
- "title": "Related Products",
- "icon": "product",
- "description": "Display related products.",
- "category": "woocommerce",
- "supports": {
- "align": true,
- "reusable": false
- },
- "keywords": [ "WooCommerce" ],
- "usesContext": [ "postId", "postType", "queryId" ],
- "textdomain": "woocommerce",
- "apiVersion": 2,
- "$schema": "https://schemas.wp.org/trunk/block.json"
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/edit.tsx
deleted file mode 100644
index 4d948c79..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/edit.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import {
- BLOCK_ATTRIBUTES,
- INNER_BLOCKS_TEMPLATE,
-} from '@woocommerce/blocks/product-query/variations';
-import {
- InnerBlocks,
- InspectorControls,
- useBlockProps,
-} from '@wordpress/block-editor';
-import { InnerBlockTemplate } from '@wordpress/blocks';
-import { Notice } from '@wordpress/components';
-import { __ } from '@wordpress/i18n';
-
-/**
- * Internal dependencies
- */
-import './editor.scss';
-
-const Edit = () => {
- const TEMPLATE: InnerBlockTemplate[] = [
- [ 'core/query', BLOCK_ATTRIBUTES, INNER_BLOCKS_TEMPLATE ],
- ];
- const blockProps = useBlockProps();
-
- return (
-
-
-
-
- { __(
- 'These products will vary depending on the main product in the page',
- 'woo-gutenberg-products-block'
- ) }
-
-
-
-
-
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/editor.scss
deleted file mode 100644
index e6161225..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/editor.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.wc-block-editor-related-products__notice {
- margin: auto $gap $gap;
- max-width: max-content;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/index.tsx
deleted file mode 100644
index 3db32a52..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/index.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * External dependencies
- */
-import { box as icon } from '@wordpress/icons';
-import { registerBlockSingleProductTemplate } from '@woocommerce/atomic-utils';
-
-/**
- * Internal dependencies
- */
-import edit from './edit';
-import save from './save';
-import metadata from './block.json';
-
-registerBlockSingleProductTemplate( {
- blockName: metadata.name,
- // @ts-expect-error: `metadata` currently does not have a type definition in WordPress core
- blockMetadata: metadata,
- blockSettings: {
- icon,
- edit,
- save,
- },
- isAvailableOnPostEditor: false,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/save.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/save.tsx
deleted file mode 100644
index 0feb6d8f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/related-products/save.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { InnerBlocks, useBlockProps } from '@wordpress/block-editor';
-
-const Save = () => {
- const blockProps = useBlockProps.save();
-
- return (
-
- { /* @ts-expect-error: `InnerBlocks.Content` is a component that is typed in WordPress core*/ }
-
-
- );
-};
-
-export default Save;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/attributes.ts
deleted file mode 100644
index 46b57509..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/attributes.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * External dependencies
- */
-import type { BlockAttributes } from '@wordpress/blocks';
-
-export const blockAttributes: BlockAttributes = {
- productId: {
- type: 'number',
- default: 0,
- },
- isDescendentOfQueryLoop: {
- type: 'boolean',
- default: false,
- },
- isDescendentOfSingleProductTemplate: {
- type: 'boolean',
- default: false,
- },
-};
-
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.tsx
deleted file mode 100644
index 9284e558..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/block.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import classnames from 'classnames';
-import { Label } from '@woocommerce/blocks-components';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import type { HTMLAttributes } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import type { BlockAttributes } from './types';
-
-type Props = BlockAttributes & HTMLAttributes< HTMLDivElement >;
-
-export const Block = ( props: Props ): JSX.Element | null => {
- const { className, align } = props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
-
- if (
- ( ! product.id || ! product.on_sale ) &&
- ! props.isDescendentOfSingleProductTemplate
- ) {
- return null;
- }
-
- const alignClass =
- typeof align === 'string'
- ? `wc-block-components-product-sale-badge--align-${ align }`
- : '';
-
- return (
-
-
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/constants.tsx
deleted file mode 100644
index 8ecdd4d0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/constants.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { percent, Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'On-Sale Badge',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Displays an on-sale badge if the product is on-sale.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/edit.tsx
deleted file mode 100644
index c0947af3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/edit.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-import { useEffect } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import type { BlockAttributes } from './types';
-import { useIsDescendentOfSingleProductTemplate } from '../shared/use-is-descendent-of-single-product-template';
-
-const Edit = ( {
- attributes,
- setAttributes,
- context,
-}: BlockEditProps< BlockAttributes > & { context: Context } ): JSX.Element => {
- const blockProps = useBlockProps();
-
- const blockAttrs = {
- ...attributes,
- ...context,
- };
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
-
- const { isDescendentOfSingleProductTemplate } =
- useIsDescendentOfSingleProductTemplate();
-
- useEffect(
- () =>
- setAttributes( {
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductTemplate,
- } ),
- [
- setAttributes,
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductTemplate,
- ]
- );
-
- return (
-
-
-
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/index.ts
deleted file mode 100644
index 63e573f4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/index.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import type { BlockConfiguration } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import attributes from './attributes';
-import edit from './edit';
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-import { supports } from './support';
-
-const blockConfig: BlockConfiguration = {
- ...sharedConfig,
- title,
- description,
- icon: { src: icon },
- apiVersion: 2,
- supports,
- attributes,
- edit,
- usesContext: [ 'query', 'queryId', 'postId' ],
- ancestor: [
- 'woocommerce/all-products',
- 'woocommerce/single-product',
- 'core/post-template',
- 'woocommerce/product-template',
- 'woocommerce/product-gallery',
- ],
-};
-
-registerBlockType( 'woocommerce/product-sale-badge', { ...blockConfig } );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/style.scss
deleted file mode 100644
index 22b8db19..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/style.scss
+++ /dev/null
@@ -1,37 +0,0 @@
-.wp-block-woocommerce-product-sale-badge {
- display: flex;
- flex-direction: column;
-}
-
-.wc-block-components-product-sale-badge {
- @include font-size(small);
- padding: em($gap-smallest) em($gap-small);
- display: inline-block;
- width: fit-content;
- border: 1px solid #43454b;
- border-radius: $universal-border-radius;
- box-sizing: border-box;
- color: #43454b;
- background: #fff;
- text-align: center;
- text-transform: uppercase;
- font-weight: 600;
- z-index: 9;
- position: static;
-
- &--align-left {
- align-self: auto;
- }
- &--align-center {
- align-self: center;
- }
- &--align-right {
- align-self: flex-end;
- }
-
- span {
- color: inherit;
- background-color: inherit;
- }
-
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/support.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/support.ts
deleted file mode 100644
index 707a76bc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/support.ts
+++ /dev/null
@@ -1,50 +0,0 @@
-/* eslint-disable @wordpress/no-unsafe-wp-apis */
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import { __experimentalGetSpacingClassesAndStyles } from '@wordpress/block-editor';
-
-export const supports = {
- html: false,
- align: true,
- ...( isFeaturePluginBuild() && {
- color: {
- gradients: true,
- background: true,
- link: false,
- __experimentalSkipSerialization: true,
- },
- typography: {
- fontSize: true,
- lineHeight: true,
- __experimentalFontFamily: true,
- __experimentalFontWeight: true,
- __experimentalFontStyle: true,
- __experimentalSkipSerialization: true,
- __experimentalLetterSpacing: true,
- __experimentalTextTransform: true,
- __experimentalTextDecoration: true,
- },
- __experimentalBorder: {
- color: true,
- radius: true,
- width: true,
- __experimentalSkipSerialization: true,
- },
- // @todo: Improve styles support when WordPress 6.4 is released. https://make.wordpress.org/core/2023/07/17/introducing-the-block-selectors-api/
- ...( typeof __experimentalGetSpacingClassesAndStyles === 'function' && {
- spacing: {
- margin: true,
- padding: true,
- },
- } ),
- __experimentalSelector: '.wc-block-components-product-sale-badge',
- } ),
- ...( typeof __experimentalGetSpacingClassesAndStyles === 'function' &&
- ! isFeaturePluginBuild() && {
- spacing: {
- margin: true,
- },
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/types.ts
deleted file mode 100644
index 3395dfac..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sale-badge/types.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export interface BlockAttributes {
- productId: number;
- align: 'left' | 'center' | 'right';
- isDescendentOfQueryLoop?: boolean | undefined;
- isDescendentOfSingleProductTemplate?: boolean;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/save.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/save.js
deleted file mode 100644
index c678c0d3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/save.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-
-const save = ( { attributes } ) => {
- if (
- attributes.isDescendentOfQueryLoop ||
- attributes.isDescendentOfSingleProductBlock ||
- attributes.isDescendentOfSingleProductTemplate
- ) {
- return null;
- }
-
- return (
-
- );
-};
-
-export default save;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/config.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/config.tsx
deleted file mode 100644
index 86d07aed..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/config.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { Icon, grid } from '@wordpress/icons';
-import type { BlockConfiguration } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import save from '../save';
-
-/**
- * Holds default config for this collection of blocks.
- * attributes and title are omitted here as these are added on an individual block level.
- */
-const sharedConfig: Omit< BlockConfiguration, 'attributes' | 'title' > = {
- category: 'woocommerce-product-elements',
- keywords: [ __( 'WooCommerce', 'woo-gutenberg-products-block' ) ],
- icon: {
- src: (
-
- ),
- },
- supports: {
- html: false,
- },
- ancestor: [ 'woocommerce/all-products', 'woocommerce/single-product' ],
- save,
- deprecated: [
- {
- attributes: {},
- save(): null {
- return null;
- },
- },
- ],
-};
-
-export default sharedConfig;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/editor.scss
deleted file mode 100644
index 1f43ee64..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/editor.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-.wc-atomic-blocks-product__selection {
- width: 100%;
-}
-.wc-atomic-blocks-product__edit-card {
- padding: 16px;
- border-top: 1px solid $gray-200;
-
- .wc-atomic-blocks-product__edit-card-title {
- margin: 0 0 $gap;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/product-selector.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/product-selector.tsx
deleted file mode 100644
index 68568fa7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/product-selector.tsx
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import ProductControl from '@woocommerce/editor-components/product-control';
-import { Placeholder, Button, ToolbarGroup } from '@wordpress/components';
-import { BlockControls } from '@wordpress/block-editor';
-import TextToolbarButton from '@woocommerce/editor-components/text-toolbar-button';
-import { useState } from '@wordpress/element';
-
-export const ProductSelector = ( {
- productId,
- icon,
- label,
- description,
- setAttributes,
- children,
-}: {
- productId: string;
- icon: string;
- label: string;
- description: string;
- setAttributes: ( obj: Record< string, string > ) => void;
- children: React.ReactNode;
-} ) => {
- const [ isEditing, setIsEditing ] = useState( ! productId );
-
- return (
- <>
- { isEditing ? (
-
- { !! description && { description }
}
-
-
{
- setAttributes( {
- productId: value[ 0 ] ? value[ 0 ].id : 0,
- } );
- } }
- />
- {
- setIsEditing( false );
- } }
- >
- { __( 'Done', 'woo-gutenberg-products-block' ) }
-
-
-
- ) : (
- <>
-
-
- setIsEditing( true ) }
- >
- { __(
- 'Switch product…',
- 'woo-gutenberg-products-block'
- ) }
-
-
-
- { children }
- >
- ) }
- >
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-block.tsx
deleted file mode 100644
index 463afcbe..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-block.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * External dependencies
- */
-import { useSelect } from '@wordpress/data';
-
-interface UseIsDescendentOfSingleProductBlockProps {
- blockClientId: string;
-}
-
-export const useIsDescendentOfSingleProductBlock = ( {
- blockClientId,
-}: UseIsDescendentOfSingleProductBlockProps ) => {
- const { isDescendentOfSingleProductBlock } = useSelect(
- ( select ) => {
- const { getBlockParentsByBlockName } =
- select( 'core/block-editor' );
- const blockParentBlocksIds = getBlockParentsByBlockName(
- blockClientId?.replace( 'block-', '' ),
- [ 'woocommerce/single-product' ]
- );
- return {
- isDescendentOfSingleProductBlock:
- blockParentBlocksIds.length > 0,
- };
- },
- [ blockClientId ]
- );
-
- return { isDescendentOfSingleProductBlock };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-template.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-template.tsx
deleted file mode 100644
index 0ec27408..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/use-is-descendent-of-single-product-template.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * External dependencies
- */
-import { useSelect } from '@wordpress/data';
-
-export const useIsDescendentOfSingleProductTemplate = () => {
- const isDescendentOfSingleProductTemplate = useSelect( ( select ) => {
- const store = select( 'core/edit-site' );
- const postId = store?.getEditedPostId< string | undefined >();
-
- return Boolean( postId?.includes( '//single-product' ) );
- }, [] );
-
- return { isDescendentOfSingleProductTemplate };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/with-product-selector.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/with-product-selector.js
deleted file mode 100644
index cfc52211..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/shared/with-product-selector.js
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useState } from '@wordpress/element';
-import ProductControl from '@woocommerce/editor-components/product-control';
-import { Placeholder, Button, ToolbarGroup } from '@wordpress/components';
-import { BlockControls } from '@wordpress/block-editor';
-import TextToolbarButton from '@woocommerce/editor-components/text-toolbar-button';
-import { useProductDataContext } from '@woocommerce/shared-context';
-
-/**
- * Internal dependencies
- */
-import './editor.scss';
-
-/**
- * This HOC shows a product selection interface if context is not present in the editor.
- *
- * @param {Object} selectorArgs Options for the selector.
- *
- */
-const withProductSelector = ( selectorArgs ) => ( OriginalComponent ) => {
- return ( props ) => {
- const productDataContext = useProductDataContext();
- const { attributes, setAttributes } = props;
- const { productId } = attributes;
- const [ isEditing, setIsEditing ] = useState( ! productId );
-
- if (
- productDataContext.hasContext ||
- Number.isFinite( props.context?.queryId )
- ) {
- return ;
- }
-
- return (
- <>
- { isEditing ? (
-
- { !! selectorArgs.description && (
- { selectorArgs.description }
- ) }
-
-
{
- setAttributes( {
- productId: value[ 0 ]
- ? value[ 0 ].id
- : 0,
- } );
- } }
- />
- {
- setIsEditing( false );
- } }
- >
- { __( 'Done', 'woocommerce' ) }
-
-
-
- ) : (
- <>
-
-
- setIsEditing( true ) }
- >
- { __(
- 'Switch product…',
- 'woocommerce'
- ) }
-
-
-
-
- >
- ) }
- >
- );
- };
-};
-
-export default withProductSelector;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/attributes.ts
deleted file mode 100644
index d70b39f1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/attributes.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * External dependencies
- */
-import type { BlockAttributes } from '@wordpress/blocks';
-
-export const blockAttributes: BlockAttributes = {
- productId: {
- type: 'number',
- default: 0,
- },
- isDescendentOfQueryLoop: {
- type: 'boolean',
- default: false,
- },
- isDescendentOfSingleProductTemplate: {
- type: 'boolean',
- default: false,
- },
- isDescendantOfAllProducts: {
- type: 'boolean',
- default: false,
- },
- showProductSelector: {
- type: 'boolean',
- default: false,
- },
-};
-
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/block.tsx
deleted file mode 100644
index 26851ab0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/block.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import classnames from 'classnames';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import type { HTMLAttributes } from 'react';
-import { useStyleProps } from '@woocommerce/base-hooks';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import type { Attributes } from './types';
-
-type Props = Attributes & HTMLAttributes< HTMLDivElement >;
-
-const Preview = ( {
- parentClassName,
- sku,
- className,
- style,
-}: {
- parentClassName: string;
- sku: string;
- className?: string | undefined;
- style?: React.CSSProperties | undefined;
-} ) => (
-
- { __( 'SKU:', 'woo-gutenberg-products-block' ) }{ ' ' }
- { sku }
-
-);
-
-const Block = ( props: Props ): JSX.Element | null => {
- const { className } = props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
- const sku = product.sku;
-
- if ( props.isDescendentOfSingleProductTemplate ) {
- return (
-
- );
- }
-
- if ( ! sku ) {
- return null;
- }
-
- return (
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/constants.tsx
deleted file mode 100644
index 1408fd04..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/constants.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { barcode } from '@woocommerce/icons';
-import { Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'Product SKU',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Display the SKU of a product.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/edit.tsx
deleted file mode 100644
index 17032101..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/edit.tsx
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-import EditProductLink from '@woocommerce/editor-components/edit-product-link';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-import { useEffect } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import type { Attributes } from './types';
-import { useIsDescendentOfSingleProductBlock } from '../shared/use-is-descendent-of-single-product-block';
-import { useIsDescendentOfSingleProductTemplate } from '../shared/use-is-descendent-of-single-product-template';
-
-const Edit = ( {
- attributes,
- setAttributes,
- context,
-}: BlockEditProps< Attributes > & { context: Context } ): JSX.Element => {
- const { style, ...blockProps } = useBlockProps( {
- className:
- 'wc-block-components-product-sku wp-block-woocommerce-product-sku',
- } );
- const blockAttrs = {
- ...attributes,
- ...context,
- };
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
- const { isDescendentOfSingleProductBlock } =
- useIsDescendentOfSingleProductBlock( { blockClientId: blockProps.id } );
-
- let { isDescendentOfSingleProductTemplate } =
- useIsDescendentOfSingleProductTemplate();
-
- if ( isDescendentOfQueryLoop ) {
- isDescendentOfSingleProductTemplate = false;
- }
-
- useEffect(
- () =>
- setAttributes( {
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductTemplate,
- isDescendentOfSingleProductBlock,
- } ),
- [
- setAttributes,
- isDescendentOfQueryLoop,
- isDescendentOfSingleProductTemplate,
- isDescendentOfSingleProductBlock,
- ]
- );
-
- return (
- <>
-
-
-
-
- >
- );
-};
-
-export default Edit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/index.tsx
deleted file mode 100644
index 4edc1dfc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/index.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import type { BlockConfiguration } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import attributes from './attributes';
-import edit from './edit';
-import { supports } from './supports';
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-
-const { ancestor, ...configuration } = sharedConfig;
-
-const blockConfig: BlockConfiguration = {
- ...configuration,
- apiVersion: 2,
- title,
- description,
- icon: { src: icon },
- usesContext: [ 'query', 'queryId', 'postId' ],
- attributes,
- ancestor: [
- 'woocommerce/all-products',
- 'woocommerce/single-product',
- 'core/post-template',
- 'woocommerce/product-template',
- 'woocommerce/product-meta',
- ],
- edit,
- supports,
-};
-
-registerBlockType( 'woocommerce/product-sku', { ...blockConfig } );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/style.scss
deleted file mode 100644
index d32bc9ca..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.wc-block-components-product-sku {
- display: block;
- text-transform: uppercase;
- @include font-size(small);
- overflow-wrap: break-word;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/supports.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/supports.ts
deleted file mode 100644
index 6c6f9120..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/supports.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import {
- // @ts-expect-error We check if this exists before using it.
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalGetSpacingClassesAndStyles,
-} from '@wordpress/block-editor';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-
-export const supports = {
- ...sharedConfig.supports,
- color: {
- text: true,
- background: true,
- },
- typography: {
- fontSize: true,
- lineHeight: true,
- ...( isFeaturePluginBuild() && {
- __experimentalFontWeight: true,
- __experimentalFontFamily: true,
- __experimentalFontStyle: true,
- __experimentalTextTransform: true,
- __experimentalTextDecoration: true,
- __experimentalLetterSpacing: true,
- } ),
- },
- ...( typeof __experimentalGetSpacingClassesAndStyles === 'function' && {
- spacing: {
- margin: true,
- padding: true,
- },
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/types.ts
deleted file mode 100644
index a43531d1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/sku/types.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export interface Attributes {
- productId: number;
- isDescendentOfQueryLoop: boolean;
- isDescendentOfSingleProductTemplate: boolean;
- isDescendentOfSingleProductBlock: boolean;
- showProductSelector: boolean;
- isDescendantOfAllProducts: boolean;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/attributes.ts
deleted file mode 100644
index cf1ec2d2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/attributes.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * External dependencies
- */
-import type { BlockAttributes } from '@wordpress/blocks';
-
-export const blockAttributes: BlockAttributes = {
- productId: {
- type: 'number',
- default: 0,
- },
- isDescendentOfQueryLoop: {
- type: 'boolean',
- default: false,
- },
- isDescendantOfAllProducts: {
- type: 'boolean',
- default: false,
- },
-};
-
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.tsx
deleted file mode 100644
index 1323cfa2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/block.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import classnames from 'classnames';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import type { HTMLAttributes } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import type { BlockAttributes } from './types';
-
-/**
- * Get stock text based on stock. For example:
- * - In stock
- * - Out of stock
- * - Available on backorder
- * - 2 left in stock
- *
- * @param stockInfo Object containing stock information.
- * @param stockInfo.isInStock Whether product is in stock.
- * @param stockInfo.isLowStock Whether product is low in stock.
- * @param stockInfo.lowStockAmount Number of items left in stock.
- * @param stockInfo.isOnBackorder Whether product is on backorder.
- * @return string Stock text.
- */
-const getTextBasedOnStock = ( {
- isInStock = false,
- isLowStock = false,
- lowStockAmount = null,
- isOnBackorder = false,
-}: {
- isInStock?: boolean;
- isLowStock?: boolean;
- lowStockAmount?: number | null;
- isOnBackorder?: boolean;
-} ): string => {
- if ( isLowStock && lowStockAmount !== null ) {
- return sprintf(
- /* translators: %d stock amount (number of items in stock for product) */
- __( '%d left in stock', 'woo-gutenberg-products-block' ),
- lowStockAmount
- );
- } else if ( isOnBackorder ) {
- return __( 'Available on backorder', 'woo-gutenberg-products-block' );
- } else if ( isInStock ) {
- return __( 'In stock', 'woo-gutenberg-products-block' );
- }
- return __( 'Out of stock', 'woo-gutenberg-products-block' );
-};
-
-type Props = BlockAttributes & HTMLAttributes< HTMLDivElement >;
-
-export const Block = ( props: Props ): JSX.Element | null => {
- const { className } = props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
-
- if ( ! product.id ) {
- return null;
- }
-
- const inStock = !! product.is_in_stock;
- const lowStock = product.low_stock_remaining;
- const isBackordered = product.is_on_backorder;
-
- return (
-
- { getTextBasedOnStock( {
- isInStock: inStock,
- isLowStock: !! lowStock,
- lowStockAmount: lowStock,
- isOnBackorder: isBackordered,
- } ) }
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/constants.tsx
deleted file mode 100644
index 01d220da..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/constants.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { box, Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'Product Stock Indicator',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Display product stock status.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/edit.tsx
deleted file mode 100644
index 83efbf32..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/edit.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * External dependencies
- */
-import EditProductLink from '@woocommerce/editor-components/edit-product-link';
-import { useBlockProps } from '@wordpress/block-editor';
-import type { BlockEditProps } from '@wordpress/blocks';
-import { ProductQueryContext as Context } from '@woocommerce/blocks/product-query/types';
-import { useEffect } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import withProductSelector from '../shared/with-product-selector';
-import {
- BLOCK_TITLE as label,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-import type { BlockAttributes } from './types';
-
-const Edit = ( {
- attributes,
- setAttributes,
- context,
-}: BlockEditProps< BlockAttributes > & { context: Context } ): JSX.Element => {
- const { style, ...blockProps } = useBlockProps( {
- className: 'wc-block-components-product-stock-indicator',
- } );
-
- const blockAttrs = {
- ...attributes,
- ...context,
- };
- const isDescendentOfQueryLoop = Number.isFinite( context.queryId );
-
- useEffect(
- () => setAttributes( { isDescendentOfQueryLoop } ),
- [ setAttributes, isDescendentOfQueryLoop ]
- );
-
- return (
-
-
-
-
- );
-};
-
-export default withProductSelector( { icon, label, description } )( Edit );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/index.ts
deleted file mode 100644
index 5c7fed8b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/index.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import type { BlockConfiguration } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import attributes from './attributes';
-import edit from './edit';
-import { supports } from './supports';
-
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-
-const blockConfig: BlockConfiguration = {
- ...sharedConfig,
- apiVersion: 2,
- title,
- description,
- icon: { src: icon },
- attributes,
- supports,
- edit,
- usesContext: [ 'query', 'queryId', 'postId' ],
- ancestor: [
- 'woocommerce/all-products',
- 'woocommerce/single-product',
- 'core/post-template',
- 'woocommerce/product-template',
- ],
-};
-
-registerBlockType( 'woocommerce/product-stock-indicator', {
- ...blockConfig,
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/style.scss
deleted file mode 100644
index b9ad469e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/style.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-.wc-block-components-product-stock-indicator {
- margin-top: 0;
- margin-bottom: em($gap-small);
- display: block;
- @include font-size(small);
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/supports.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/supports.ts
deleted file mode 100644
index 6c6f9120..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/supports.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import {
- // @ts-expect-error We check if this exists before using it.
- // eslint-disable-next-line @wordpress/no-unsafe-wp-apis
- __experimentalGetSpacingClassesAndStyles,
-} from '@wordpress/block-editor';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-
-export const supports = {
- ...sharedConfig.supports,
- color: {
- text: true,
- background: true,
- },
- typography: {
- fontSize: true,
- lineHeight: true,
- ...( isFeaturePluginBuild() && {
- __experimentalFontWeight: true,
- __experimentalFontFamily: true,
- __experimentalFontStyle: true,
- __experimentalTextTransform: true,
- __experimentalTextDecoration: true,
- __experimentalLetterSpacing: true,
- } ),
- },
- ...( typeof __experimentalGetSpacingClassesAndStyles === 'function' && {
- spacing: {
- margin: true,
- padding: true,
- },
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/types.ts
deleted file mode 100644
index c68e4b51..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/stock-indicator/types.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export interface BlockAttributes {
- productId: number;
- isDescendentOfQueryLoop: boolean;
- isDescendantOfAllProducts: boolean;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/attributes.ts
deleted file mode 100644
index 6cc07445..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/attributes.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * External dependencies
- */
-import type { BlockAttributes } from '@wordpress/blocks';
-
-export const blockAttributes: BlockAttributes = {
- productId: {
- type: 'number',
- default: 0,
- },
-};
-
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/block.tsx
deleted file mode 100644
index 1c467b96..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/block.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import Summary from '@woocommerce/base-components/summary';
-import { blocksConfig } from '@woocommerce/block-settings';
-
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import type { HTMLAttributes } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import type { BlockAttributes } from './types';
-
-type Props = BlockAttributes & HTMLAttributes< HTMLDivElement >;
-
-const Block = ( props: Props ): JSX.Element | null => {
- const { className } = props;
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
- const styleProps = useStyleProps( props );
-
- if ( ! product ) {
- return (
-
- );
- }
-
- const source = product.short_description
- ? product.short_description
- : product.description;
-
- if ( ! source ) {
- return null;
- }
-
- return (
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/constants.tsx
deleted file mode 100644
index a24e7066..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/constants.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { page, Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'Product Summary',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Display a short description about a product.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/edit.tsx
deleted file mode 100644
index 7d13625e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/edit.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import withProductSelector from '../shared/with-product-selector';
-import {
- BLOCK_TITLE as label,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-import './editor.scss';
-import type { BlockAttributes } from './types';
-
-interface Props {
- attributes: BlockAttributes;
-}
-
-const Edit = ( { attributes }: Props ): JSX.Element => {
- const blockProps = useBlockProps();
- return (
-
-
-
- );
-};
-
-// @todo: Refactor this to remove the HOC 'withProductSelector()' component as users will not see this block in the inserter. Therefore, we can export the Edit component by default. The HOC 'withProductSelector()' component should also be removed from other `product-elements` components. See also https://github.com/woocommerce/woocommerce-blocks/pull/7566#pullrequestreview-1168635469.
-export default withProductSelector( { icon, label, description } )( Edit );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/editor.scss
deleted file mode 100644
index a541f5a7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/editor.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-.wc-block-components-product-summary {
- p {
- font-size: inherit;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/index.ts
deleted file mode 100644
index 31bb50ff..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/index.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import type { BlockConfiguration } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import attributes from './attributes';
-import edit from './edit';
-import { supports } from './supports';
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-import { Save } from './save';
-
-const blockConfig: BlockConfiguration = {
- ...sharedConfig,
- apiVersion: 2,
- title,
- description,
- icon: { src: icon },
- attributes,
- supports,
- edit,
- save: Save,
-};
-
-registerBlockType( 'woocommerce/product-summary', blockConfig );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/save.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/save.tsx
deleted file mode 100644
index 03a720e2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/save.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-import classnames from 'classnames';
-
-type Props = {
- attributes: Record< string, unknown > & {
- className?: string;
- };
-};
-
-export const Save = ( { attributes }: Props ): JSX.Element => {
- return (
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/style.scss
deleted file mode 100644
index 57cb2515..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/style.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-.wc-block-components-product-summary {
- margin-top: 0;
- margin-bottom: $gap-small;
-}
-.is-loading .wc-block-components-product-summary::before {
- @include placeholder();
- content: ".";
- display: block;
- width: 100%;
- height: 6em;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/supports.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/supports.ts
deleted file mode 100644
index 851b5c45..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/supports.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * External dependencies
- */
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-
-export const supports = {
- ...( isFeaturePluginBuild() && {
- color: {
- background: false,
- },
- typography: {
- fontSize: true,
- },
- __experimentalSelector: '.wc-block-components-product-summary',
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/types.ts
deleted file mode 100644
index e64df6f3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/summary/types.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export interface BlockAttributes {
- productId: number;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/attributes.ts
deleted file mode 100644
index a6d3110e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/attributes.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * External dependencies
- */
-import type { BlockAttributes } from '@wordpress/blocks';
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-
-let blockAttributes: BlockAttributes = {
- headingLevel: {
- type: 'number',
- default: 2,
- },
- showProductLink: {
- type: 'boolean',
- default: true,
- },
- linkTarget: {
- type: 'string',
- },
- productId: {
- type: 'number',
- default: 0,
- },
-};
-
-if ( isFeaturePluginBuild() ) {
- blockAttributes = {
- ...blockAttributes,
- align: {
- type: 'string',
- },
- };
-}
-export default blockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/block.tsx
deleted file mode 100644
index 2c95c151..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/block.tsx
+++ /dev/null
@@ -1,114 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import {
- useInnerBlockLayoutContext,
- useProductDataContext,
-} from '@woocommerce/shared-context';
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import { withProductDataContext } from '@woocommerce/shared-hocs';
-import ProductName from '@woocommerce/base-components/product-name';
-import { useStoreEvents } from '@woocommerce/base-context/hooks';
-import { useStyleProps } from '@woocommerce/base-hooks';
-import type { HTMLAttributes } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import { Attributes } from './types';
-
-type Props = Attributes & HTMLAttributes< HTMLDivElement >;
-
-interface TagNameProps extends HTMLAttributes< HTMLOrSVGElement > {
- headingLevel: number;
- elementType?: keyof JSX.IntrinsicElements;
-}
-
-const TagName = ( {
- children,
- headingLevel,
- elementType:
- ElementType = `h${ headingLevel }` as keyof JSX.IntrinsicElements,
- ...props
-}: TagNameProps ): JSX.Element => {
- return { children } ;
-};
-
-/**
- * Product Title Block Component.
- *
- * @param {Object} props Incoming props.
- * @param {string} [props.className] CSS Class name for the component.
- * @param {number} [props.headingLevel] Heading level (h1, h2, etc.)
- * @param {boolean} [props.showProductLink] Whether or not to display a link to the product page.
- * @param {string} [props.linkTarget] Specifies where to open the linked URL.
- * @param {string} [props.align] Title alignment.
- * will be used if this is not provided.
- * @return {*} The component.
- */
-export const Block = ( props: Props ): JSX.Element => {
- const {
- className,
- headingLevel = 2,
- showProductLink = true,
- linkTarget,
- align,
- } = props;
- const styleProps = useStyleProps( props );
- const { parentClassName } = useInnerBlockLayoutContext();
- const { product } = useProductDataContext();
- const { dispatchStoreEvent } = useStoreEvents();
-
- if ( ! product.id ) {
- return (
-
- );
- }
-
- return (
-
- {
- dispatchStoreEvent( 'product-view-link', {
- product,
- } );
- } }
- />
-
- );
-};
-
-export default withProductDataContext( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/constants.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/constants.tsx
deleted file mode 100644
index 4ed5f283..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/constants.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { heading, Icon } from '@wordpress/icons';
-
-export const BLOCK_TITLE: string = __(
- 'Product Title',
- 'woo-gutenberg-products-block'
-);
-export const BLOCK_ICON: JSX.Element = (
-
-);
-export const BLOCK_DESCRIPTION: string = __(
- 'Display the title of a product.',
- 'woo-gutenberg-products-block'
-);
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/edit.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/edit.tsx
deleted file mode 100644
index 3c716359..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/edit.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { Disabled, PanelBody, ToggleControl } from '@wordpress/components';
-import { compose } from '@wordpress/compose';
-import {
- InspectorControls,
- BlockControls,
- AlignmentToolbar,
- useBlockProps,
-} from '@wordpress/block-editor';
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import HeadingToolbar from '@woocommerce/editor-components/heading-toolbar';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import withProductSelector from '../shared/with-product-selector';
-import { BLOCK_TITLE, BLOCK_ICON } from './constants';
-import { Attributes } from './types';
-import './editor.scss';
-
-interface Props {
- attributes: Attributes;
- setAttributes: ( attributes: Record< string, unknown > ) => void;
-}
-
-const TitleEdit = ( { attributes, setAttributes }: Props ): JSX.Element => {
- const blockProps = useBlockProps();
- const { headingLevel, showProductLink, align, linkTarget } = attributes;
- return (
-
-
-
- setAttributes( { headingLevel: newLevel } )
- }
- />
- { isFeaturePluginBuild() && (
- {
- setAttributes( { align: newAlign } );
- } }
- />
- ) }
-
-
-
-
- setAttributes( {
- showProductLink: ! showProductLink,
- } )
- }
- />
- { showProductLink && (
- <>
-
- setAttributes( {
- linkTarget: value ? '_blank' : '_self',
- } )
- }
- checked={ linkTarget === '_blank' }
- />
- >
- ) }
-
-
-
-
-
-
- );
-};
-
-const Title = isFeaturePluginBuild()
- ? compose( [
- withProductSelector( {
- icon: BLOCK_ICON,
- label: BLOCK_TITLE,
- description: __(
- 'Choose a product to display its title.',
- 'woo-gutenberg-products-block'
- ),
- } ),
- ] )( TitleEdit )
- : TitleEdit;
-
-export default Title;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/editor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/editor.scss
deleted file mode 100644
index 12d3cefd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/editor.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-.editor-styles-wrapper .wc-block-components-product-title a.wc-block-components-product-name {
- color: inherit;
-}
-
-.editor-styles-wrapper .wc-block-components-product-title {
- margin-top: 0;
- margin-bottom: $gap-small;
- line-height: 1.5;
- font-weight: 700;
- padding: 0;
- display: block;
- font-size: inherit;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/frontend.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/frontend.ts
deleted file mode 100644
index b6c77399..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/frontend.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * External dependencies
- */
-import { withFilteredAttributes } from '@woocommerce/shared-hocs';
-
-/**
- * Internal dependencies
- */
-import Block from './block';
-import attributes from './attributes';
-
-export default withFilteredAttributes( attributes )( Block );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/index.ts
deleted file mode 100644
index 222cdf5a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/index.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-/* eslint-disable @wordpress/no-unsafe-wp-apis */
-/**
- * External dependencies
- */
-import { registerBlockType } from '@wordpress/blocks';
-import type { BlockConfiguration } from '@wordpress/blocks';
-import { isFeaturePluginBuild } from '@woocommerce/block-settings';
-import { __experimentalGetSpacingClassesAndStyles } from '@wordpress/block-editor';
-
-/**
- * Internal dependencies
- */
-import sharedConfig from '../shared/config';
-import attributes from './attributes';
-import edit from './edit';
-import {
- BLOCK_TITLE as title,
- BLOCK_ICON as icon,
- BLOCK_DESCRIPTION as description,
-} from './constants';
-import { Save } from './save';
-
-const blockConfig: BlockConfiguration = {
- ...sharedConfig,
- apiVersion: 2,
- title,
- description,
- icon: { src: icon },
- attributes,
- edit,
- save: Save,
- supports: {
- ...sharedConfig.supports,
- ...( isFeaturePluginBuild() && {
- typography: {
- fontSize: true,
- lineHeight: true,
- __experimentalFontWeight: true,
- __experimentalTextTransform: true,
- __experimentalFontFamily: true,
- },
- color: {
- text: true,
- background: true,
- link: false,
- gradients: true,
- __experimentalSkipSerialization: true,
- },
- ...( typeof __experimentalGetSpacingClassesAndStyles ===
- 'function' && {
- spacing: {
- margin: true,
- __experimentalSkipSerialization: true,
- },
- } ),
- __experimentalSelector: '.wc-block-components-product-title',
- } ),
- },
-};
-
-registerBlockType( 'woocommerce/product-title', blockConfig );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/save.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/save.tsx
deleted file mode 100644
index 03a720e2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/save.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * External dependencies
- */
-import { useBlockProps } from '@wordpress/block-editor';
-import classnames from 'classnames';
-
-type Props = {
- attributes: Record< string, unknown > & {
- className?: string;
- };
-};
-
-export const Save = ( { attributes }: Props ): JSX.Element => {
- return (
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/style.scss
deleted file mode 100644
index 14374757..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/style.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-.wc-block-components-product-title {
- margin-top: 0;
- margin-bottom: $gap-small;
- line-height: 1.5;
- font-weight: 700;
- padding: 0;
- display: block;
- font-size: inherit;
-
- a {
- color: inherit;
- font-size: inherit;
- }
-
-}
-
-.is-loading {
- .wc-block-components-product-title::before {
- @include placeholder();
- content: ".";
- display: inline-block;
- width: 7em;
- }
- .wc-block-grid .wc-block-components-product-title::before {
- width: 10em;
- }
-}
-
-/*rtl:begin:ignore*/
-.wc-block-components-product-title--align-left {
- text-align: left;
-}
-.wc-block-components-product-title--align-center {
- text-align: center;
-}
-.wc-block-components-product-title--align-right {
- text-align: right;
-}
-/*rtl:end:ignore*/
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/test/block.test.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/test/block.test.js
deleted file mode 100644
index c8605cb1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/test/block.test.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * External dependencies
- */
-import { render } from '@testing-library/react';
-import { ProductDataContextProvider } from '@woocommerce/shared-context';
-
-/**
- * Internal dependencies
- */
-import { Block } from '../block';
-
-const product = {
- id: 1,
- name: 'Test product',
- permalink: 'https://test.com/product/test-product/',
-};
-
-describe( 'Product Title Block', () => {
- describe( 'without product link', () => {
- test( 'should render the product title without an anchor wrapper', () => {
- const component = render(
-
-
-
- );
-
- const productName = component.getByText( product.name );
- const anchor = productName.closest( 'a' );
-
- expect( anchor ).toBe( null );
- } );
- } );
-
- describe( 'with product link', () => {
- test( 'should render an anchor with the product title', () => {
- const component = render(
-
-
-
- );
-
- const productName = component.getByText( product.name );
- const anchor = productName.closest( 'a' );
-
- expect( anchor.getAttribute( 'href' ) ).toBe( product.permalink );
- expect( anchor.getAttribute( 'target' ) ).toBeNull();
- } );
-
- test( 'should render an anchor with the product title and target blank', () => {
- const component = render(
-
-
-
- );
-
- const productName = component.getByText( product.name );
- const anchor = productName.closest( 'a' );
-
- expect( anchor.getAttribute( 'href' ) ).toBe( product.permalink );
- expect( anchor.getAttribute( 'target' ) ).toBe( '_blank' );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/types.ts
deleted file mode 100644
index 68e77d0d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/blocks/product-elements/title/types.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export interface Attributes {
- headingLevel: number;
- showProductLink: boolean;
- linkTarget?: string;
- align: string;
-}
-
-export interface Props {
- align: string;
- color: string;
- customColor: string;
- fontSize: string;
- customFontSize: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/block-registration-strategy.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/block-registration-strategy.ts
deleted file mode 100644
index cfc7171f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/block-registration-strategy.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * External dependencies
- */
-import {
- BlockConfiguration,
- registerBlockType,
- unregisterBlockType,
- registerBlockVariation,
- unregisterBlockVariation,
- BlockVariation,
- BlockAttributes,
-} from '@wordpress/blocks';
-
-export interface BlockRegistrationStrategy {
- register(
- blockNameOrMetadata: string | Partial< BlockConfiguration >,
- blockSettings: Partial< BlockConfiguration >
- ): boolean;
- unregister( blockName: string, variationName?: string ): boolean;
-}
-
-export class BlockTypeStrategy implements BlockRegistrationStrategy {
- register(
- blockNameOrMetadata: string | Partial< BlockConfiguration >,
- blockSettings: Partial< BlockConfiguration >
- ): boolean {
- return Boolean(
- // @ts-expect-error: `registerBlockType` is typed in WordPress core
- registerBlockType( blockNameOrMetadata, blockSettings )
- );
- }
-
- unregister( blockName: string ): boolean {
- return Boolean( unregisterBlockType( blockName ) );
- }
-}
-
-// Strategy for BlockVariation
-export class BlockVariationStrategy implements BlockRegistrationStrategy {
- register(
- blockName: string,
- blockSettings: Partial< BlockConfiguration >
- ): boolean {
- return Boolean(
- registerBlockVariation(
- blockName,
- blockSettings as BlockVariation< BlockAttributes >
- )
- );
- }
-
- unregister( blockName: string, variationName: string ): boolean {
- return Boolean( unregisterBlockVariation( blockName, variationName ) );
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-registration-manager.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-registration-manager.ts
deleted file mode 100644
index 7ca69ae8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-registration-manager.ts
+++ /dev/null
@@ -1,182 +0,0 @@
-/**
- * External dependencies
- */
-import { getBlockType } from '@wordpress/blocks';
-
-/**
- * Internal dependencies
- */
-import {
- TemplateChangeDetector,
- TemplateChangeDetectorObserver,
-} from './template-change-detector';
-import {
- BlockRegistrationStrategy,
- BlockTypeStrategy,
- BlockVariationStrategy,
-} from './block-registration-strategy';
-import { BLOCKS_WITH_RESTRICTION } from './blocks-with-restriction';
-
-/**
- * Manages the registration and unregistration of blocks based on template or page restrictions.
- *
- * This class implements the TemplateChangeDetectorObserver interface and is responsible for managing the registration and unregistration of blocks based on the restrictions defined in the BLOCKS_WITH_RESTRICTION constant.
- *
- * The class maintains a list of unregistered blocks and uses a block registration strategy to register and unregister blocks as needed. The strategy used depends on whether the block is a variation block or a regular block.
- *
- * The `run` method is the main entry point for the class. It is called with a TemplateChangeDetector object and registers and unregisters blocks based on the current template and whether the editor is in post or page mode.
- */
-export class BlockRegistrationManager
- implements TemplateChangeDetectorObserver
-{
- private unregisteredBlocks: string[] = [];
- private blockRegistrationStrategy: BlockRegistrationStrategy;
-
- constructor() {
- this.blockRegistrationStrategy = new BlockTypeStrategy();
- }
-
- /**
- * Determines whether a block should be registered based on the current template or page.
- *
- * This method checks whether a block with restrictions should be registered based on the current template ID and
- * whether the editor is in post or page mode. It checks whether the current template ID starts with any of the
- * allowed templates or template parts for the block, and whether the block is available in the post or page editor.
- *
- * @param {Object} params - The parameters for the method.
- * @param {string} params.blockWithRestrictionName - The name of the block with restrictions.
- * @param {string} params.currentTemplateId - The ID of the current template.
- * @param {boolean} params.isPostOrPage - Whether the editor is in a post or page.
- * @return {boolean} True if the block should be registered, false otherwise.
- */
- private shouldBlockBeRegistered( {
- blockWithRestrictionName,
- currentTemplateId,
- isPostOrPage,
- }: {
- blockWithRestrictionName: string;
- currentTemplateId: string;
- isPostOrPage: boolean;
- } ) {
- const {
- allowedTemplates,
- allowedTemplateParts,
- availableInPostOrPageEditor,
- } = BLOCKS_WITH_RESTRICTION[ blockWithRestrictionName ];
- const shouldBeAvailableOnTemplate = Object.keys(
- allowedTemplates
- ).some( ( allowedTemplate ) =>
- currentTemplateId.startsWith( allowedTemplate )
- );
- const shouldBeAvailableOnTemplatePart = Object.keys(
- allowedTemplateParts
- ).some( ( allowedTemplate ) =>
- currentTemplateId.startsWith( allowedTemplate )
- );
- const shouldBeAvailableOnPostOrPageEditor =
- isPostOrPage && availableInPostOrPageEditor;
-
- return (
- shouldBeAvailableOnTemplate ||
- shouldBeAvailableOnTemplatePart ||
- shouldBeAvailableOnPostOrPageEditor
- );
- }
-
- /**
- * Unregisters blocks before entering a restricted area based on the current template or page/post.
- *
- * This method iterates over all blocks with restrictions and unregisters them if they should not be registered
- * based on the current template ID and whether the editor is in a post or page. It uses a block registration
- * strategy to unregister the blocks, which depends on whether the block is a variation block or a regular block.
- *
- * @param {Object} params - The parameters for the method.
- * @param {string} params.currentTemplateId - The ID of the current template.
- * @param {boolean} params.isPostOrPage - Whether the editor is in post or page mode.
- */
- unregisterBlocksBeforeEnteringRestrictedArea( {
- currentTemplateId,
- isPostOrPage,
- }: {
- currentTemplateId: string;
- isPostOrPage: boolean;
- } ) {
- for ( const blockWithRestrictionName of Object.keys(
- BLOCKS_WITH_RESTRICTION
- ) ) {
- if (
- this.shouldBlockBeRegistered( {
- blockWithRestrictionName,
- currentTemplateId,
- isPostOrPage,
- } )
- ) {
- continue;
- }
-
- if ( ! getBlockType( blockWithRestrictionName ) ) {
- continue;
- }
-
- this.blockRegistrationStrategy = BLOCKS_WITH_RESTRICTION[
- blockWithRestrictionName
- ].isVariationBlock
- ? new BlockVariationStrategy()
- : new BlockTypeStrategy();
-
- this.blockRegistrationStrategy.unregister(
- blockWithRestrictionName
- );
- this.unregisteredBlocks.push( blockWithRestrictionName );
- }
- }
-
- /**
- * Registers blocks after leaving a restricted area.
- *
- * This method iterates over all unregistered blocks and registers them if they are not restricted in the current context.
- * It uses a block registration strategy to register the blocks, which depends on whether the block is a variation block or a regular block.
- * If the block is successfully registered, it is removed from the list of unregistered blocks.
- */
- registerBlocksAfterLeavingRestrictedArea() {
- for ( const unregisteredBlockName of this.unregisteredBlocks ) {
- if ( ! getBlockType( unregisteredBlockName ) ) {
- continue;
- }
-
- const restrictedBlockData =
- BLOCKS_WITH_RESTRICTION[ unregisteredBlockName ];
- this.blockRegistrationStrategy = BLOCKS_WITH_RESTRICTION[
- unregisteredBlockName
- ].isVariationBlock
- ? new BlockVariationStrategy()
- : new BlockTypeStrategy();
- const isBlockRegistered = this.blockRegistrationStrategy.register(
- restrictedBlockData.blockMetadata,
- restrictedBlockData.blockSettings
- );
- this.unregisteredBlocks = isBlockRegistered
- ? this.unregisteredBlocks.filter(
- ( blockName ) => blockName !== unregisteredBlockName
- )
- : this.unregisteredBlocks;
- }
- }
-
- /**
- * Runs the block registration manager.
- *
- * This method is the main entry point for the block registration manager. It is called with a TemplateChangeDetector object,
- * and registers and unregisters blocks based on the current template and whether the editor is in a post or page.
- *
- * @param {TemplateChangeDetector} templateChangeDetector - The template change detector object.
- */
- run( templateChangeDetector: TemplateChangeDetector ) {
- this.registerBlocksAfterLeavingRestrictedArea();
- this.unregisterBlocksBeforeEnteringRestrictedArea( {
- currentTemplateId:
- templateChangeDetector.getCurrentTemplateId() || '',
- isPostOrPage: templateChangeDetector.getIsPostOrPage(),
- } );
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-with-restriction.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-with-restriction.ts
deleted file mode 100644
index 7b3782b9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/blocks-with-restriction.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * External dependencies
- */
-import { BlockConfiguration } from '@wordpress/blocks';
-import { ProductGalleryBlockSettings } from '@woocommerce/blocks/product-gallery/settings';
-
-/**
- * Internal dependencies
- */
-import productGalleryBlockMetadata from '../../../blocks/product-gallery/block.json';
-
-export interface BlocksWithRestriction {
- [ key: string ]: {
- blockMetadata: Partial< BlockConfiguration >;
- blockSettings: Partial< BlockConfiguration >;
- allowedTemplates: {
- [ key: string ]: boolean;
- };
- allowedTemplateParts: {
- [ key: string ]: boolean;
- };
- availableInPostOrPageEditor: boolean;
- isVariationBlock: boolean;
- };
-}
-
-// eslint-disable-next-line @typescript-eslint/ban-ts-comment
-// @ts-expect-error: `metadata` currently does not have a type definition in WordPress core
-export const BLOCKS_WITH_RESTRICTION: BlocksWithRestriction = {
- [ productGalleryBlockMetadata.name ]: {
- blockMetadata: productGalleryBlockMetadata,
- blockSettings: ProductGalleryBlockSettings,
- allowedTemplates: {
- 'single-product': true,
- },
- allowedTemplateParts: {
- 'product-gallery': true,
- },
- availableInPostOrPageEditor: false,
- isVariationBlock: false,
- },
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/index.ts
deleted file mode 100644
index e24334f2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/index.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * External dependencies
- */
-import domReady from '@wordpress/dom-ready';
-
-/**
- * Internal dependencies
- */
-import { BlockRegistrationManager } from './blocks-registration-manager';
-import { TemplateChangeDetector } from './template-change-detector';
-
-domReady( () => {
- const templateChangeDetector = new TemplateChangeDetector();
- const blockRegistrationManager = new BlockRegistrationManager();
- templateChangeDetector.add( blockRegistrationManager );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/template-change-detector.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/template-change-detector.ts
deleted file mode 100644
index 344fff89..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/blocks-registration-manager/template-change-detector.ts
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * External dependencies
- */
-import { subscribe, select } from '@wordpress/data';
-import { isNumber } from '@woocommerce/types';
-
-interface TemplateChangeDetectorSubject {
- add( observer: TemplateChangeDetectorObserver ): void;
- getPreviousTemplateId(): string | undefined;
- getCurrentTemplateId(): string | undefined;
- notify(): void;
-}
-
-export interface TemplateChangeDetectorObserver {
- run( subject: TemplateChangeDetectorSubject ): void;
-}
-
-/**
- * This class implements the TemplateChangeDetectorSubject interface and is responsible for detecting changes in the
- * current template or page and notifying any observers of these changes. It maintains a list of observers and provides methods
- * to add observers and notify them of changes.
- *
- * The class also provides methods to get the previous and current template IDs and whether the editor is in a post or page.
- *
- * The `checkIfTemplateHasChangedAndNotifySubscribers` method is the main method of the class. It checks if the current
- * template has changed and, if so, notifies all observers.
- */
-export class TemplateChangeDetector implements TemplateChangeDetectorSubject {
- private previousTemplateId: string | undefined;
- private currentTemplateId: string | undefined;
- private isPostOrPage: boolean;
-
- private observers: TemplateChangeDetectorObserver[] = [];
-
- constructor() {
- this.isPostOrPage = false;
- subscribe( () => {
- this.checkIfTemplateHasChangedAndNotifySubscribers();
- }, 'core/edit-site' );
- }
-
- public add( observer: TemplateChangeDetectorObserver ): void {
- this.observers.push( observer );
- }
-
- /**
- * Trigger an update in each subscriber.
- */
- public notify(): void {
- for ( const observer of this.observers ) {
- observer.run( this );
- }
- }
-
- public getPreviousTemplateId() {
- return this.previousTemplateId;
- }
-
- public getCurrentTemplateId() {
- return this.currentTemplateId;
- }
-
- public getIsPostOrPage() {
- return this.isPostOrPage;
- }
-
- /**
- * Parses the template ID.
- *
- * This method takes a template or a post ID and returns it parsed in the expected format.
- *
- * @param {string | number | undefined} templateId - The template ID to parse.
- * @return {string | undefined} The parsed template ID.
- */
- private parseTemplateId(
- templateId: string | number | undefined
- ): string | undefined {
- if ( isNumber( templateId ) ) {
- return String( templateId );
- }
- return templateId?.split( '//' )[ 1 ];
- }
-
- /**
- * Checks if the current template or page has changed and notifies subscribers.
- *
- * If the current template ID has changed and is not undefined (which means that it is not a page, post or template), it notifies all subscribers.
- */
- public checkIfTemplateHasChangedAndNotifySubscribers(): void {
- this.previousTemplateId = this.currentTemplateId;
-
- const postOrPageId = select( 'core/editor' )?.getCurrentPostId<
- string | number | undefined
- >();
-
- this.isPostOrPage = Boolean( postOrPageId );
-
- const editedPostId =
- postOrPageId ||
- select( 'core/edit-site' )?.getEditedPostId<
- string | number | undefined
- >();
- this.currentTemplateId = this.parseTemplateId( editedPostId );
-
- const hasChangedTemplate =
- this.previousTemplateId !== this.currentTemplateId;
- const hasTemplateId = Boolean( this.currentTemplateId );
-
- if ( ! hasChangedTemplate || ! hasTemplateId ) {
- return;
- }
-
- this.notify();
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/create-blocks-from-template.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/create-blocks-from-template.js
deleted file mode 100644
index f641768e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/create-blocks-from-template.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * External dependencies
- */
-import { createBlock } from '@wordpress/blocks';
-
-/**
- * Creates blocks for a given inner blocks Template.
- *
- * @param {Array} template Inner Blocks Template.
- */
-export const createBlocksFromTemplate = ( template ) => {
- return template.map( ( [ name, atts = {}, innerBlocks = [] ] ) => {
- const children = innerBlocks
- ? createBlocksFromTemplate( innerBlocks )
- : [];
- return createBlock( name, atts, children );
- } );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/get-block-map.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/get-block-map.ts
deleted file mode 100644
index 1dc8db8b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/get-block-map.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * External dependencies
- */
-import { getRegisteredBlockComponents } from '@woocommerce/blocks-registry';
-import type { RegisteredBlockComponent } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import '../blocks/component-init';
-
-/**
- * Map named Blocks to defined React Components to render on the frontend.
- *
- * @param {string} blockName Name of the parent block.
- */
-export const getBlockMap = (
- blockName: string
-): Record< string, RegisteredBlockComponent > =>
- getRegisteredBlockComponents( blockName );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/index.js
deleted file mode 100644
index 06280bb4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from './get-block-map';
-export * from './create-blocks-from-template';
-export * from './render-parent-block';
-export * from './render-standalone-blocks';
-export * from './register-block-single-product-template';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/register-block-single-product-template.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/register-block-single-product-template.ts
deleted file mode 100644
index 87784a00..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/register-block-single-product-template.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * External dependencies
- */
-import { isNumber, isEmpty } from '@woocommerce/types';
-import {
- BlockAttributes,
- BlockConfiguration,
- BlockVariation,
- getBlockType,
- registerBlockType,
- registerBlockVariation,
- unregisterBlockType,
- unregisterBlockVariation,
-} from '@wordpress/blocks';
-import { subscribe, select } from '@wordpress/data';
-
-// Creating a local cache to prevent multiple registration tries.
-const blocksRegistered = new Set();
-
-function parseTemplateId( templateId: string | number | undefined ) {
- // With GB 16.3.0 the return type can be a number: https://github.com/WordPress/gutenberg/issues/53230
- const parsedTemplateId = isNumber( templateId ) ? undefined : templateId;
- return parsedTemplateId?.split( '//' )[ 1 ];
-}
-
-export const registerBlockSingleProductTemplate = ( {
- blockName,
- blockMetadata,
- blockSettings,
- isVariationBlock = false,
- variationName,
- isAvailableOnPostEditor,
-}: {
- blockName: string;
- blockMetadata: Partial< BlockConfiguration >;
- blockSettings: Partial< BlockConfiguration >;
- isAvailableOnPostEditor: boolean;
- isVariationBlock?: boolean;
- variationName?: string;
-} ) => {
- let currentTemplateId: string | undefined = '';
-
- subscribe( () => {
- const previousTemplateId = currentTemplateId;
- const store = select( 'core/edit-site' );
-
- // With GB 16.3.0 the return type can be a number: https://github.com/WordPress/gutenberg/issues/53230
- currentTemplateId = parseTemplateId(
- store?.getEditedPostId< string | number | undefined >()
- );
- const hasChangedTemplate = previousTemplateId !== currentTemplateId;
- const hasTemplateId = Boolean( currentTemplateId );
-
- if ( ! hasChangedTemplate || ! hasTemplateId || ! blockName ) {
- return;
- }
-
- let isBlockRegistered = Boolean( getBlockType( blockName ) );
-
- /**
- * We need to unregister the block each time the user visits or leaves the Single Product template.
- *
- * The Single Product template is the only template where the `ancestor` property is not needed because it provides the context
- * for the product blocks. We need to unregister and re-register the block to remove or add the `ancestor` property depending on which
- * location (template, post, page, etc.) the user is in.
- *
- */
- if (
- isBlockRegistered &&
- ( currentTemplateId?.includes( 'single-product' ) ||
- previousTemplateId?.includes( 'single-product' ) )
- ) {
- if ( isVariationBlock && variationName ) {
- unregisterBlockVariation( blockName, variationName );
- } else {
- unregisterBlockType( blockName );
- }
- isBlockRegistered = false;
- }
-
- if ( ! isBlockRegistered ) {
- if ( isVariationBlock ) {
- // @ts-expect-error: `registerBlockType` is not typed in WordPress core
- registerBlockVariation( blockName, blockSettings );
- } else {
- const ancestor = isEmpty( blockSettings?.ancestor )
- ? [ 'woocommerce/single-product' ]
- : blockSettings?.ancestor;
- // @ts-expect-error: `registerBlockType` is not typed in WordPress core
- registerBlockType( blockMetadata, {
- ...blockSettings,
- ancestor: ! currentTemplateId?.includes( 'single-product' )
- ? ancestor
- : undefined,
- } );
- }
- }
- }, 'core/edit-site' );
-
- subscribe( () => {
- const isBlockRegistered = Boolean( variationName )
- ? blocksRegistered.has( variationName )
- : blocksRegistered.has( blockName );
- // This subscribe callback could be invoked with the core/blocks store
- // which would cause infinite registration loops because of the `registerBlockType` call.
- // This local cache helps prevent that.
- if ( ! isBlockRegistered && isAvailableOnPostEditor ) {
- if ( isVariationBlock ) {
- blocksRegistered.add( variationName );
- registerBlockVariation(
- blockName,
- blockSettings as BlockVariation< BlockAttributes >
- );
- } else {
- blocksRegistered.add( blockName );
- // @ts-expect-error: `registerBlockType` is typed in WordPress core
- registerBlockType( blockMetadata, blockSettings );
- }
- }
- }, 'core/edit-post' );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-parent-block.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-parent-block.tsx
deleted file mode 100644
index 09340773..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-parent-block.tsx
+++ /dev/null
@@ -1,318 +0,0 @@
-/**
- * External dependencies
- */
-import { renderFrontend } from '@woocommerce/base-utils';
-import { CURRENT_USER_IS_ADMIN } from '@woocommerce/settings';
-import {
- Fragment,
- Suspense,
- isValidElement,
- cloneElement,
-} from '@wordpress/element';
-import parse from 'html-react-parser';
-import {
- getRegisteredBlocks,
- hasInnerBlocks,
-} from '@woocommerce/blocks-checkout';
-import BlockErrorBoundary from '@woocommerce/base-components/block-error-boundary';
-
-/**
- * This file contains logic used on the frontend to convert DOM elements (saved by the block editor) to React
- * Components. These components are registered using registerBlockComponent() and registerCheckoutBlock() and map 1:1
- * to a block by name.
- *
- * Blocks using this system will have their blockName stored as a data attribute, for example:
- *
- *
- * This block name is then read, and using the map, dynamically converted to a real React Component.
- *
- * @see registerBlockComponent
- * @see registerCheckoutBlock
- */
-
-/**
- * Gets a component from the block map for a given block name, or returns null if a component is not registered.
- */
-const getBlockComponentFromMap = (
- block: string,
- blockMap: Record< string, React.ReactNode >
-): React.ElementType | null => {
- return block && blockMap[ block ]
- ? ( blockMap[ block ] as React.ElementType )
- : null;
-};
-
-/**
- * Render forced blocks which are missing from the template.
- *
- * Forced blocks are registered in registerCheckoutBlock. If a block is forced, it will be inserted in the editor
- * automatically, however, until that happens they may be missing from the frontend. To fix this, we look up what blocks
- * are registered as forced, and then append them here if they are missing.
- *
- * @see registerCheckoutBlock
- */
-const renderForcedBlocks = (
- block: string,
- blockMap: Record< string, React.ReactNode >,
- // Current children from the parent (siblings of the forced block)
- blockChildren: NodeListOf< ChildNode > | null,
- // Wrapper for inner components.
- blockWrapper?: React.ElementType
-) => {
- if ( ! hasInnerBlocks( block ) ) {
- return null;
- }
-
- const currentBlocks = blockChildren
- ? ( Array.from( blockChildren )
- .map( ( node: Node ) =>
- node instanceof HTMLElement
- ? node?.dataset.blockName || null
- : null
- )
- .filter( Boolean ) as string[] )
- : [];
-
- const forcedBlocks = getRegisteredBlocks( block ).filter(
- ( { blockName, force } ) =>
- force === true && ! currentBlocks.includes( blockName )
- );
-
- // This will wrap inner blocks with the provided wrapper. If no wrapper is provided, we default to Fragment.
- const InnerBlockComponentWrapper = blockWrapper ? blockWrapper : Fragment;
-
- return (
- <>
- { forcedBlocks.map(
- (
- { blockName, component },
- index: number
- ): JSX.Element | null => {
- const ForcedComponent = component
- ? component
- : getBlockComponentFromMap( blockName, blockMap );
- return ForcedComponent ? (
-
-
-
-
-
- ) : null;
- }
- ) }
- >
- );
-};
-
-interface renderInnerBlocksProps {
- // Block (parent) being rendered. Used for inner block component mapping.
- block: string;
- // Map of block names to block components for children.
- blockMap: Record< string, React.ReactNode >;
- // Wrapper for inner components.
- blockWrapper?: React.ElementType | undefined;
- // Elements from the DOM being converted to components.
- children: HTMLCollection | NodeList;
- // Depth within the DOM hierarchy.
- depth?: number;
-}
-
-/**
- * Recursively replace block markup in the DOM with React Components.
- */
-const renderInnerBlocks = ( {
- // This is the parent block we're working within (see renderParentBlock)
- block,
- // This is the map of blockNames->components
- blockMap,
- // Component which inner blocks are wrapped with.
- blockWrapper,
- // The children from the DOM we're currently iterating over.
- children,
- // Current depth of the children. Used to ensure keys are unique.
- depth = 1,
-}: renderInnerBlocksProps ): ( string | JSX.Element | null )[] | null => {
- if ( ! children || children.length === 0 ) {
- return null;
- }
- return Array.from( children ).map( ( node: Node, index: number ) => {
- /**
- * This will grab the blockName from the data- attributes stored in block markup. Without a blockName, we cannot
- * convert the HTMLElement to a React component.
- */
- const { blockName = '', ...componentProps } = {
- ...( node instanceof HTMLElement ? node.dataset : {} ),
- className: node instanceof Element ? node?.className : '',
- };
- const componentKey = `${ block }_${ depth }_${ index }`;
- const InnerBlockComponent = getBlockComponentFromMap(
- blockName,
- blockMap
- );
-
- /**
- * If the component cannot be found, or blockName is missing, return the original element. This also ensures
- * that children within the element are processed also, since it may be an element containing block markup.
- *
- * Note we use childNodes rather than children so that text nodes are also rendered.
- */
- if ( ! InnerBlockComponent ) {
- const parsedElement = parse(
- ( node instanceof Element && node?.outerHTML ) ||
- node?.textContent ||
- ''
- );
-
- // Returns text nodes without manipulation.
- if ( typeof parsedElement === 'string' && !! parsedElement ) {
- return parsedElement;
- }
-
- // Do not render invalid elements.
- if ( ! isValidElement( parsedElement ) ) {
- return null;
- }
-
- const renderedChildren = node.childNodes.length
- ? renderInnerBlocks( {
- block,
- blockMap,
- children: node.childNodes,
- depth: depth + 1,
- blockWrapper,
- } )
- : undefined;
-
- // We pass props here rather than componentProps to avoid the data attributes being renamed.
- return renderedChildren
- ? cloneElement(
- parsedElement,
- {
- key: componentKey,
- ...( parsedElement?.props || {} ),
- },
- renderedChildren
- )
- : cloneElement( parsedElement, {
- key: componentKey,
- ...( parsedElement?.props || {} ),
- } );
- }
-
- // This will wrap inner blocks with the provided wrapper. If no wrapper is provided, we default to Fragment.
- const InnerBlockComponentWrapper = blockWrapper
- ? blockWrapper
- : Fragment;
-
- return (
- }
- >
- { /* Prevent third party components from breaking the entire checkout */ }
-
-
-
- {
- /**
- * Within this Inner Block Component we also need to recursively render it's children. This
- * is done here with a depth+1. The same block map and parent is used, but we pass new
- * children from this element.
- */
- renderInnerBlocks( {
- block,
- blockMap,
- children: node.childNodes,
- depth: depth + 1,
- blockWrapper,
- } )
- }
- {
- /**
- * In addition to the inner blocks, we may also need to render FORCED blocks which have not
- * yet been added to the inner block template. We do this by comparing the current children
- * to the list of registered forced blocks.
- *
- * @see registerCheckoutBlock
- */
- renderForcedBlocks(
- blockName,
- blockMap,
- node.childNodes,
- blockWrapper
- )
- }
-
-
-
-
- );
- } );
-};
-
-/**
- * Render a parent block on the frontend.
- *
- * This is the main entry point used on the frontend to convert Block Markup (with inner blocks) in the DOM to React
- * Components.
- *
- * This uses renderFrontend(). The difference is, renderFrontend renders a single block, but renderParentBlock() also
- * handles inner blocks by recursively running over children from the DOM.
- *
- * @see renderInnerBlocks
- * @see renderFrontend
- */
-export const renderParentBlock = ( {
- Block,
- selector,
- blockName,
- getProps = () => ( {} ),
- blockMap,
- blockWrapper,
-}: {
- // Parent Block Name. Used for inner block component mapping.
- blockName: string;
- // Map of block names to block components for children.
- blockMap: Record< string, React.ReactNode >;
- // Wrapper for inner components.
- blockWrapper?: React.ElementType;
- // React component to use as a replacement.
- Block: React.FunctionComponent;
- // CSS selector to match the elements to replace.
- selector: string;
- // Function to generate the props object for the block.
- getProps: ( el: Element, i: number ) => Record< string, unknown >;
-} ): void => {
- /**
- * In addition to getProps, we need to render and return the children. This adds children to props.
- */
- const getPropsWithChildren = ( element: Element, i: number ) => {
- const children = renderInnerBlocks( {
- block: blockName,
- blockMap,
- children: element.children || [],
- blockWrapper,
- } );
- return { ...getProps( element, i ), children };
- };
- /**
- * The only difference between using renderParentBlock and renderFrontend is that here we provide children.
- */
- renderFrontend( {
- Block,
- selector,
- getProps: getPropsWithChildren,
- } );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-standalone-blocks.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-standalone-blocks.js
deleted file mode 100644
index 6ffe28a0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/atomic/utils/render-standalone-blocks.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * External dependencies
- */
-import { renderFrontend } from '@woocommerce/base-utils';
-
-/**
- * Internal dependencies
- */
-import { getBlockMap } from './get-block-map';
-
-export const renderStandaloneBlocks = () => {
- const blockMap = getBlockMap( '' );
-
- Object.keys( blockMap ).forEach( ( blockName ) => {
- const selector = '.wp-block-' + blockName.replace( '/', '-' );
-
- const getProps = ( el ) => {
- return el.dataset;
- };
-
- renderFrontend( {
- Block: blockMap[ blockName ],
- selector,
- getProps,
- } );
- } );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/README.MD b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/README.MD
deleted file mode 100644
index 64302efd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/README.MD
+++ /dev/null
@@ -1,11 +0,0 @@
-# Base Components/Context/Hooks
-
-Base components are designed to be used on the frontend of a store. Due to this, we need to avoid using heavy WordPress externals as dependencies (wp-components, wp-block-editor, etc). To get around this, import from a local package instead.
-
-e.g. Instead of importing from `@wordpress/components`, use:
-
-```js
-import { Component } from 'wordpress-components';
-```
-
-Check the built `*.assets.php` files to ensure extra dependencies aren't being added to the build.
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/block-error.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/block-error.tsx
deleted file mode 100644
index eaeef8ac..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/block-error.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { WC_BLOCKS_IMAGE_URL } from '@woocommerce/block-settings';
-
-/**
- * Internal dependencies
- */
-import type { BlockErrorProps } from './types';
-
-const BlockError = ( {
- imageUrl = `${ WC_BLOCKS_IMAGE_URL }/block-error.svg`,
- header = __( 'Oops!', 'woo-gutenberg-products-block' ),
- text = __(
- 'There was an error loading the content.',
- 'woo-gutenberg-products-block'
- ),
- errorMessage,
- errorMessagePrefix = __( 'Error:', 'woo-gutenberg-products-block' ),
- button,
- showErrorBlock = true,
-}: BlockErrorProps ): JSX.Element | null => {
- return showErrorBlock ? (
-
- { imageUrl && (
- // The alt text is left empty on purpose, as it's considered a decorative image.
- // More can be found here: https://www.w3.org/WAI/tutorials/images/decorative/.
- // Github discussion for a context: https://github.com/woocommerce/woocommerce-blocks/pull/7651#discussion_r1019560494.
-
- ) }
-
- { header && (
-
- { header }
-
- ) }
- { text && (
-
- { text }
-
- ) }
- { errorMessage && (
-
- { errorMessagePrefix ? errorMessagePrefix + ' ' : '' }
- { errorMessage }
-
- ) }
- { button && (
-
- { button }
-
- ) }
-
-
- ) : null;
-};
-
-export default BlockError;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/index.tsx
deleted file mode 100644
index e8503739..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/index.tsx
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * External dependencies
- */
-import { Component } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import BlockError from './block-error';
-import './style.scss';
-
-import type {
- DerivedStateReturn,
- ReactError,
- BlockErrorBoundaryProps,
-} from './types';
-
-class BlockErrorBoundary extends Component< BlockErrorBoundaryProps > {
- state = { errorMessage: '', hasError: false };
-
- static getDerivedStateFromError( error: ReactError ): DerivedStateReturn {
- if (
- typeof error.statusText !== 'undefined' &&
- typeof error.status !== 'undefined'
- ) {
- return {
- errorMessage: (
- <>
- { error.status } :
- { error.statusText }
- >
- ),
- hasError: true,
- };
- }
-
- return { errorMessage: error.message, hasError: true };
- }
-
- render(): JSX.Element | React.ReactNode {
- const {
- header,
- imageUrl,
- showErrorMessage = true,
- showErrorBlock = true,
- text,
- errorMessagePrefix,
- renderError,
- button,
- } = this.props;
- const { errorMessage, hasError } = this.state;
-
- if ( hasError ) {
- if ( typeof renderError === 'function' ) {
- return renderError( { errorMessage } );
- }
- return (
-
- );
- }
-
- return this.props.children;
- }
-}
-
-export default BlockErrorBoundary;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/style.scss
deleted file mode 100644
index 0676d961..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/style.scss
+++ /dev/null
@@ -1,34 +0,0 @@
-.wc-block-components-error {
- display: flex;
- padding: $gap-largest 0;
- margin: $gap-largest 0;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- color: $gray-700;
- text-align: center;
-}
-.wc-block-components-error__header {
- @include font-size(larger);
- margin: 0;
- color: $studio-gray-50;
-}
-.wc-block-components-error__image {
- width: 25%;
- margin: 0 0 $gap-large 0;
-}
-.wc-block-components-error__text {
- margin: 1em 0 0;
- color: $studio-gray-30;
- @include font-size(large);
- max-width: 60ch;
-}
-.wc-block-components-error__message {
- margin: 1em auto 0;
- font-style: italic;
- color: $studio-gray-30;
- max-width: 60ch;
-}
-.wc-block-error__button {
- margin: $gap-largest 0 0 0;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/types.ts
deleted file mode 100644
index d91b90f7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/block-error-boundary/types.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-interface BlockErrorBase {
- /**
- * URL of the image to display.
- * If it's `null` or an empty string, no image will be displayed.
- * If it's not defined, the default image will be used.
- */
- imageUrl?: string | undefined;
- /**
- * Text to display as the heading of the error block.
- * If it's `null` or an empty string, no header will be displayed.
- * If it's not defined, the default header will be used.
- */
- header?: string | undefined;
- /**
- * Text to display in the error block below the header.
- * If it's `null` or an empty string, nothing will be displayed.
- * If it's not defined, the default text will be used.
- */
- text?: React.ReactNode | undefined;
- /**
- * Text preceeding the error message.
- */
- errorMessagePrefix?: string | undefined;
- /**
- * Button cta.
- */
- button?: React.ReactNode;
- /**
- * Controls wether to show the error block or fail silently
- */
- showErrorBlock?: boolean;
-}
-
-export interface BlockErrorProps extends BlockErrorBase {
- /**
- * Error message to display below the content.
- */
- errorMessage: React.ReactNode;
-}
-
-export type RenderErrorProps = {
- errorMessage: React.ReactNode;
-};
-
-export interface BlockErrorBoundaryProps extends BlockErrorBase {
- /**
- * Override the default error with a function that takes the error message and returns a React component
- */
- renderError?: ( props: RenderErrorProps ) => React.ReactNode;
- showErrorMessage?: boolean | undefined;
-}
-
-export interface DerivedStateReturn {
- errorMessage: JSX.Element | string;
- hasError: boolean;
-}
-
-export interface ReactError {
- status: string;
- statusText: string;
- message: string;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/index.tsx
deleted file mode 100644
index eda66687..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/index.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * External dependencies
- */
-import { Button as WPButton } from 'wordpress-components';
-import type { Button as WPButtonType } from '@wordpress/components';
-import classNames from 'classnames';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import Spinner from '../../../../../packages/components/spinner';
-
-export interface ButtonProps
- extends Omit< WPButtonType.ButtonProps, 'variant' | 'href' > {
- /**
- * Show spinner
- *
- * @default false
- */
- showSpinner?: boolean | undefined;
- /**
- * Button variant
- */
- variant?: 'text' | 'contained' | 'outlined';
- /**
- * The URL the button should link to.
- */
- href?: string | undefined;
-}
-
-export interface AnchorProps extends Omit< ButtonProps, 'href' > {
- /**
- * Button href
- */
- href?: string | undefined;
-}
-
-/**
- * Component that visually renders a button but semantically might be `` or `` depending
- * on the props.
- */
-const Button = ( {
- className,
- showSpinner = false,
- children,
- variant = 'contained',
- ...props
-}: ButtonProps ): JSX.Element => {
- const buttonClassName = classNames(
- 'wc-block-components-button',
- 'wp-element-button',
- className,
- variant,
- {
- 'wc-block-components-button--loading': showSpinner,
- }
- );
-
- return (
-
- { showSpinner && }
-
- { children }
-
-
- );
-};
-
-export default Button;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/stories/index.stories.tsx
deleted file mode 100644
index f445dbdc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/stories/index.stories.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-
-/**
- * Internal dependencies
- */
-import Button, { ButtonProps } from '..';
-const availableTypes = [ 'button', 'input', 'submit' ];
-
-export default {
- title: 'Base Components/Button',
- argTypes: {
- children: {
- control: 'text',
- },
- type: {
- control: 'radio',
- options: availableTypes,
- },
- },
- component: Button,
-} as Meta< ButtonProps >;
-
-const Template: Story< ButtonProps > = ( args ) => {
- return ;
-};
-
-export const Default = Template.bind( {} );
-Default.args = {
- children: 'Buy Now',
- disabled: false,
- showSpinner: false,
- type: 'button',
-};
-
-export const Disabled = Template.bind( {} );
-Disabled.args = {
- ...Default.args,
- disabled: true,
-};
-
-export const Loading = Template.bind( {} );
-Loading.args = {
- ...Default.args,
- disabled: true,
- showSpinner: true,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/style.scss
deleted file mode 100644
index fb6b57a0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/button/style.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-.wc-block-components-button:not(.is-link) {
- align-items: center;
- display: inline-flex;
- height: auto;
- justify-content: center;
- text-align: center;
- position: relative;
- transition: box-shadow 0.1s linear;
-
- &:focus {
- box-shadow: 0 0 0 2px $studio-blue;
- box-shadow: inset 0 0 0 1px $white, 0 0 0 2px $studio-blue;
- outline: 3px solid transparent;
- }
-
- .wc-block-components-button__text {
- display: block;
-
- > svg {
- fill: currentColor;
- }
- }
- .wc-block-components-spinner + .wc-block-components-button__text {
- visibility: hidden;
- }
-
- &.text {
- color: $gray-900;
-
- &:hover {
- opacity: 0.9;
- }
- }
-
- &.outlined {
- background: transparent;
- color: currentColor;
-
- &:not(:focus) {
- box-shadow: inset 0 0 0 1px currentColor;
- }
-
- &:disabled,
- &:hover,
- &:focus,
- &:active {
- background-color: $gray-900;
- color: $white;
- }
-
- &:hover {
- background-color: $gray-900;
- color: $white;
- opacity: 1;
- }
- }
-}
-
-body:not(.woocommerce-block-theme-has-button-styles) .wc-block-components-button:not(.is-link) {
- min-height: 3em;
-
- &:focus {
- box-shadow: 0 0 0 2px $studio-blue;
- box-shadow: inset 0 0 0 1px $white, 0 0 0 2px $studio-blue;
- outline: 3px solid transparent;
- }
-
- &.text {
- color: $gray-900;
-
- &:hover {
- opacity: 0.9;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/address-form.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/address-form.tsx
deleted file mode 100644
index aa7c8b0a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/address-form.tsx
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * External dependencies
- */
-import { isPostcode } from '@woocommerce/blocks-checkout';
-import {
- ValidatedTextInput,
- type ValidatedTextInputHandle,
-} from '@woocommerce/blocks-components';
-import {
- BillingCountryInput,
- ShippingCountryInput,
-} from '@woocommerce/base-components/country-input';
-import {
- BillingStateInput,
- ShippingStateInput,
-} from '@woocommerce/base-components/state-input';
-import { useEffect, useMemo, useRef } from '@wordpress/element';
-import { useInstanceId } from '@wordpress/compose';
-import { useShallowEqual } from '@woocommerce/base-hooks';
-import { defaultAddressFields } from '@woocommerce/settings';
-import isShallowEqual from '@wordpress/is-shallow-equal';
-
-/**
- * Internal dependencies
- */
-import {
- AddressFormProps,
- FieldType,
- FieldConfig,
- AddressFormFields,
-} from './types';
-import prepareAddressFields from './prepare-address-fields';
-import validateShippingCountry from './validate-shipping-country';
-import customValidationHandler from './custom-validation-handler';
-
-const defaultFields = Object.keys(
- defaultAddressFields
-) as unknown as FieldType[];
-
-/**
- * Checkout address form.
- */
-const AddressForm = ( {
- id = '',
- fields = defaultFields,
- fieldConfig = {} as FieldConfig,
- onChange,
- type = 'shipping',
- values,
-}: AddressFormProps ): JSX.Element => {
- const instanceId = useInstanceId( AddressForm );
-
- // Track incoming props.
- const currentFields = useShallowEqual( fields );
- const currentFieldConfig = useShallowEqual( fieldConfig );
- const currentCountry = useShallowEqual( values.country );
-
- // Memoize the address form fields passed in from the parent component.
- const addressFormFields = useMemo( (): AddressFormFields => {
- const preparedFields = prepareAddressFields(
- currentFields,
- currentFieldConfig,
- currentCountry
- );
- return {
- fields: preparedFields,
- type,
- required: preparedFields.filter( ( field ) => field.required ),
- hidden: preparedFields.filter( ( field ) => field.hidden ),
- };
- }, [ currentFields, currentFieldConfig, currentCountry, type ] );
-
- // Stores refs for rendered fields so we can access them later.
- const fieldsRef = useRef<
- Record< string, ValidatedTextInputHandle | null >
- >( {} );
-
- // Clear values for hidden fields.
- useEffect( () => {
- const newValues = {
- ...values,
- ...Object.fromEntries(
- addressFormFields.hidden.map( ( field ) => [ field.key, '' ] )
- ),
- };
- if ( ! isShallowEqual( values, newValues ) ) {
- onChange( newValues );
- }
- }, [ onChange, addressFormFields, values ] );
-
- // Maybe validate country when other fields change so user is notified that it's required.
- useEffect( () => {
- if ( type === 'shipping' ) {
- validateShippingCountry( values );
- }
- }, [ values, type ] );
-
- // Changing country may change format for postcodes.
- useEffect( () => {
- fieldsRef.current?.postcode?.revalidate();
- }, [ currentCountry ] );
-
- id = id || `${ instanceId }`;
-
- return (
-
- { addressFormFields.fields.map( ( field ) => {
- if ( field.hidden ) {
- return null;
- }
-
- const fieldProps = {
- id: `${ id }-${ field.key }`,
- errorId: `${ type }_${ field.key }`,
- label: field.required ? field.label : field.optionalLabel,
- autoCapitalize: field.autocapitalize,
- autoComplete: field.autocomplete,
- errorMessage: field.errorMessage,
- required: field.required,
- className: `wc-block-components-address-form__${ field.key }`,
- };
-
- if ( field.key === 'country' ) {
- const Tag =
- type === 'shipping'
- ? ShippingCountryInput
- : BillingCountryInput;
- return (
- {
- const newValues = {
- ...values,
- country: newCountry,
- state: '',
- };
- // Country will impact postcode too. Do we need to clear it?
- if (
- values.postcode &&
- ! isPostcode( {
- postcode: values.postcode,
- country: newCountry,
- } )
- ) {
- newValues.postcode = '';
- }
- onChange( newValues );
- } }
- />
- );
- }
-
- if ( field.key === 'state' ) {
- const Tag =
- type === 'shipping'
- ? ShippingStateInput
- : BillingStateInput;
- return (
-
- onChange( {
- ...values,
- state: newValue,
- } )
- }
- />
- );
- }
-
- return (
-
- ( fieldsRef.current[ field.key ] = el )
- }
- { ...fieldProps }
- type={ field.type }
- value={ values[ field.key ] }
- onChange={ ( newValue: string ) =>
- onChange( {
- ...values,
- [ field.key ]: newValue,
- } )
- }
- customFormatter={ ( value: string ) => {
- if ( field.key === 'postcode' ) {
- return value.trimStart().toUpperCase();
- }
- return value;
- } }
- customValidation={ ( inputObject: HTMLInputElement ) =>
- customValidationHandler(
- inputObject,
- field.key,
- values
- )
- }
- />
- );
- } ) }
-
- );
-};
-
-export default AddressForm;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/custom-validation-handler.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/custom-validation-handler.ts
deleted file mode 100644
index 3ada53f3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/custom-validation-handler.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { isPostcode } from '@woocommerce/blocks-checkout';
-
-/**
- * Custom validation handler for fields with field specific handling.
- */
-const customValidationHandler = (
- inputObject: HTMLInputElement,
- field: string,
- customValues: {
- country: string;
- }
-): boolean => {
- // Pass validation if the field is not required and is empty.
- if ( ! inputObject.required && ! inputObject.value ) {
- return true;
- }
-
- if (
- field === 'postcode' &&
- customValues.country &&
- ! isPostcode( {
- postcode: inputObject.value,
- country: customValues.country,
- } )
- ) {
- inputObject.setCustomValidity(
- __(
- 'Please enter a valid postcode',
- 'woo-gutenberg-products-block'
- )
- );
- return false;
- }
- return true;
-};
-
-export default customValidationHandler;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/index.ts
deleted file mode 100644
index b2da0fce..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as AddressForm } from './address-form';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/prepare-address-fields.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/prepare-address-fields.ts
deleted file mode 100644
index c73d9437..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/prepare-address-fields.ts
+++ /dev/null
@@ -1,131 +0,0 @@
-/** @typedef { import('@woocommerce/type-defs/address-fields').CountryAddressFields } CountryAddressFields */
-
-/**
- * External dependencies
- */
-import {
- AddressField,
- AddressFields,
- CountryAddressFields,
- defaultAddressFields,
- KeyedAddressField,
- LocaleSpecificAddressField,
-} from '@woocommerce/settings';
-import { __, sprintf } from '@wordpress/i18n';
-import { isNumber, isString } from '@woocommerce/types';
-import { COUNTRY_LOCALE } from '@woocommerce/block-settings';
-
-/**
- * Gets props from the core locale, then maps them to the shape we require in the client.
- *
- * Ignores "class", "type", "placeholder", and "autocomplete" props from core.
- *
- * @param {Object} localeField Locale fields from WooCommerce.
- * @return {Object} Supported locale fields.
- */
-const getSupportedCoreLocaleProps = (
- localeField: LocaleSpecificAddressField
-): Partial< AddressField > => {
- const fields: Partial< AddressField > = {};
-
- if ( localeField.label !== undefined ) {
- fields.label = localeField.label;
- }
-
- if ( localeField.required !== undefined ) {
- fields.required = localeField.required;
- }
-
- if ( localeField.hidden !== undefined ) {
- fields.hidden = localeField.hidden;
- }
-
- if ( localeField.label !== undefined && ! localeField.optionalLabel ) {
- fields.optionalLabel = sprintf(
- /* translators: %s Field label. */
- __( '%s (optional)', 'woo-gutenberg-products-block' ),
- localeField.label
- );
- }
-
- if ( localeField.priority ) {
- if ( isNumber( localeField.priority ) ) {
- fields.index = localeField.priority;
- }
- if ( isString( localeField.priority ) ) {
- fields.index = parseInt( localeField.priority, 10 );
- }
- }
-
- if ( localeField.hidden ) {
- fields.required = false;
- }
-
- return fields;
-};
-
-/**
- * COUNTRY_LOCALE is locale data from WooCommerce countries class. This doesn't match the shape of the new field data blocks uses,
- * but we can import part of it to set which fields are required.
- *
- * This supports new properties such as optionalLabel which are not used by core (yet).
- */
-const countryAddressFields: CountryAddressFields = Object.entries(
- COUNTRY_LOCALE
-)
- .map( ( [ country, countryLocale ] ) => [
- country,
- Object.entries( countryLocale )
- .map( ( [ localeFieldKey, localeField ] ) => [
- localeFieldKey,
- getSupportedCoreLocaleProps( localeField ),
- ] )
- .reduce( ( obj, [ key, val ] ) => {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore - Ignoring because it should be fine as long as the data from the server is correct. TS won't catch it anyway if it's not.
- obj[ key ] = val;
- return obj;
- }, {} ),
- ] )
- .reduce( ( obj, [ key, val ] ) => {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore - Ignoring because it should be fine as long as the data from the server is correct. TS won't catch it anyway if it's not.
- obj[ key ] = val;
- return obj;
- }, {} );
-
-/**
- * Combines address fields, including fields from the locale, and sorts them by index.
- *
- * @param {Array} fields List of field keys--only address fields matching these will be returned.
- * @param {Object} fieldConfigs Fields config contains field specific overrides at block level which may, for example, hide a field.
- * @param {string} addressCountry Address country code. If unknown, locale fields will not be merged.
- * @return {CountryAddressFields} Object containing address fields.
- */
-const prepareAddressFields = (
- fields: ( keyof AddressFields )[],
- fieldConfigs: Record< string, Partial< AddressField > >,
- addressCountry = ''
-): KeyedAddressField[] => {
- const localeConfigs: AddressFields =
- addressCountry && countryAddressFields[ addressCountry ] !== undefined
- ? countryAddressFields[ addressCountry ]
- : ( {} as AddressFields );
-
- return fields
- .map( ( field ) => {
- const defaultConfig = defaultAddressFields[ field ] || {};
- const localeConfig = localeConfigs[ field ] || {};
- const fieldConfig = fieldConfigs[ field ] || {};
-
- return {
- key: field,
- ...defaultConfig,
- ...localeConfig,
- ...fieldConfig,
- };
- } )
- .sort( ( a, b ) => a.index - b.index );
-};
-
-export default prepareAddressFields;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/test/index.js
deleted file mode 100644
index 3b04d30e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/test/index.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/**
- * External dependencies
- */
-import { render, screen } from '@testing-library/react';
-import userEvent from '@testing-library/user-event';
-import { CheckoutProvider } from '@woocommerce/base-context';
-import { useCheckoutAddress } from '@woocommerce/base-context/hooks';
-
-/**
- * Internal dependencies
- */
-import AddressForm from '../address-form';
-
-const renderInCheckoutProvider = ( ui, options = {} ) => {
- const Wrapper = ( { children } ) => {
- return { children } ;
- };
- return render( ui, { wrapper: Wrapper, ...options } );
-};
-
-// Countries used in testing addresses must be in the wcSettings global.
-// See: tests/js/setup-globals.js
-const primaryAddress = {
- country: 'United Kingdom',
- countryKey: 'GB',
- city: 'London',
- state: 'Greater London',
- postcode: 'ABCD',
-};
-const secondaryAddress = {
- country: 'Austria', // We use Austria because it doesn't have states.
- countryKey: 'AU',
- city: 'Vienna',
- postcode: 'DCBA',
-};
-const tertiaryAddress = {
- country: 'Canada', // We use Canada because it has a select for the state.
- countryKey: 'CA',
- city: 'Toronto',
- state: 'Ontario',
- postcode: 'EFGH',
-};
-
-const countryRegExp = /country/i;
-const cityRegExp = /city/i;
-const stateRegExp = /county|province|state/i;
-const postalCodeRegExp = /postal code|postcode|zip/i;
-
-const inputAddress = async ( {
- country = null,
- city = null,
- state = null,
- postcode = null,
-} ) => {
- if ( country ) {
- const countryInput = screen.getByLabelText( countryRegExp );
- userEvent.type( countryInput, country + '{arrowdown}{enter}' );
- }
- if ( city ) {
- const cityInput = screen.getByLabelText( cityRegExp );
- userEvent.type( cityInput, city );
- }
- if ( state ) {
- const stateButton = screen.queryByRole( 'combobox', {
- name: stateRegExp,
- } );
- // State input might be a select or a text input.
- if ( stateButton ) {
- userEvent.click( stateButton );
- userEvent.click( screen.getByRole( 'option', { name: state } ) );
- } else {
- const stateInput = screen.getByLabelText( stateRegExp );
- userEvent.type( stateInput, state );
- }
- }
- if ( postcode ) {
- const postcodeInput = screen.getByLabelText( postalCodeRegExp );
- userEvent.type( postcodeInput, postcode );
- }
-};
-
-describe( 'AddressForm Component', () => {
- const WrappedAddressForm = ( { type } ) => {
- const { defaultAddressFields, setShippingAddress, shippingAddress } =
- useCheckoutAddress();
-
- return (
-
- );
- };
- const ShippingFields = () => {
- const { shippingAddress } = useCheckoutAddress();
-
- return (
-
- { Object.keys( shippingAddress ).map( ( key ) => (
- { key + ': ' + shippingAddress[ key ] }
- ) ) }
-
- );
- };
-
- it( 'updates context value when interacting with form elements', () => {
- renderInCheckoutProvider(
- <>
-
-
- >
- );
-
- inputAddress( primaryAddress );
-
- expect( screen.getByText( /country/ ) ).toHaveTextContent(
- `country: ${ primaryAddress.countryKey }`
- );
- expect( screen.getByText( /city/ ) ).toHaveTextContent(
- `city: ${ primaryAddress.city }`
- );
- expect( screen.getByText( /state/ ) ).toHaveTextContent(
- `state: ${ primaryAddress.state }`
- );
- expect( screen.getByText( /postcode/ ) ).toHaveTextContent(
- `postcode: ${ primaryAddress.postcode }`
- );
- } );
-
- it( 'input fields update when changing the country', () => {
- renderInCheckoutProvider( );
-
- inputAddress( primaryAddress );
-
- // Verify correct labels are used.
- expect( screen.getByLabelText( /City/ ) ).toBeInTheDocument();
- expect( screen.getByLabelText( /County/ ) ).toBeInTheDocument();
- expect( screen.getByLabelText( /Postcode/ ) ).toBeInTheDocument();
-
- inputAddress( secondaryAddress );
-
- // Verify state input has been removed.
- expect( screen.queryByText( stateRegExp ) ).not.toBeInTheDocument();
-
- inputAddress( tertiaryAddress );
-
- // Verify postal code input label changed.
- expect( screen.getByLabelText( /Postal code/ ) ).toBeInTheDocument();
- } );
-
- it( 'input values are reset after changing the country', () => {
- renderInCheckoutProvider( );
-
- inputAddress( secondaryAddress );
- // Only update `country` to verify other values are reset.
- inputAddress( { country: primaryAddress.country } );
- expect( screen.getByLabelText( stateRegExp ).value ).toBe( '' );
-
- // Repeat the test with an address which has a select for the state.
- inputAddress( tertiaryAddress );
- inputAddress( { country: primaryAddress.country } );
- expect( screen.getByLabelText( stateRegExp ).value ).toBe( '' );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/types.ts
deleted file mode 100644
index b9187efb..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/types.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * External dependencies
- */
-import type {
- AddressField,
- AddressFields,
- AddressType,
- ShippingAddress,
- KeyedAddressField,
-} from '@woocommerce/settings';
-
-export type FieldConfig = Record<
- keyof AddressFields,
- Partial< AddressField >
->;
-
-export type FieldType = keyof AddressFields;
-
-export type AddressFormFields = {
- fields: KeyedAddressField[];
- type: AddressType;
- required: KeyedAddressField[];
- hidden: KeyedAddressField[];
-};
-
-export interface AddressFormProps {
- // Id for component.
- id?: string;
- // Type of form (billing or shipping).
- type?: AddressType;
- // Array of fields in form.
- fields: FieldType[];
- // Field configuration for fields in form.
- fieldConfig?: FieldConfig;
- // Called with the new address data when the address form changes. This is only called when all required fields are filled and there are no validation errors.
- onChange: ( newValue: ShippingAddress ) => void;
- // Values for fields.
- values: ShippingAddress;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/validate-shipping-country.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/validate-shipping-country.ts
deleted file mode 100644
index c10ffebf..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/address-form/validate-shipping-country.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { type ShippingAddress } from '@woocommerce/settings';
-import { select, dispatch } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-// If it's the shipping address form and the user starts entering address
-// values without having set the country first, show an error.
-const validateShippingCountry = ( values: ShippingAddress ): void => {
- const validationErrorId = 'shipping_country';
- const hasValidationError =
- select( VALIDATION_STORE_KEY ).getValidationError( validationErrorId );
- if (
- ! values.country &&
- ( values.city || values.state || values.postcode )
- ) {
- if ( hasValidationError ) {
- dispatch( VALIDATION_STORE_KEY ).showValidationError(
- validationErrorId
- );
- } else {
- dispatch( VALIDATION_STORE_KEY ).setValidationErrors( {
- [ validationErrorId ]: {
- message: __(
- 'Please select your country',
- 'woo-gutenberg-products-block'
- ),
- hidden: false,
- },
- } );
- }
- }
-
- if ( hasValidationError && values.country ) {
- dispatch( VALIDATION_STORE_KEY ).clearValidationError(
- validationErrorId
- );
- }
-};
-
-export default validateShippingCountry;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/cart-line-item-row.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/cart-line-item-row.tsx
deleted file mode 100644
index a05ba686..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/cart-line-item-row.tsx
+++ /dev/null
@@ -1,377 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { __, sprintf } from '@wordpress/i18n';
-import { speak } from '@wordpress/a11y';
-import QuantitySelector from '@woocommerce/base-components/quantity-selector';
-import ProductPrice from '@woocommerce/base-components/product-price';
-import ProductName from '@woocommerce/base-components/product-name';
-import {
- useStoreCartItemQuantity,
- useStoreEvents,
- useStoreCart,
-} from '@woocommerce/base-context/hooks';
-import { getCurrencyFromPriceResponse } from '@woocommerce/price-format';
-import { applyCheckoutFilter, mustContain } from '@woocommerce/blocks-checkout';
-import Dinero from 'dinero.js';
-import { forwardRef, useMemo } from '@wordpress/element';
-import type { CartItem } from '@woocommerce/types';
-import { objectHasProp, Currency } from '@woocommerce/types';
-import { getSetting } from '@woocommerce/settings';
-
-/**
- * Internal dependencies
- */
-import ProductBackorderBadge from '../product-backorder-badge';
-import ProductImage from '../product-image';
-import ProductLowStockBadge from '../product-low-stock-badge';
-import ProductMetadata from '../product-metadata';
-import ProductSaleBadge from '../product-sale-badge';
-
-/**
- * Convert a Dinero object with precision to store currency minor unit.
- *
- * @param {Dinero} priceObject Price object to convert.
- * @param {Object} currency Currency data.
- * @return {number} Amount with new minor unit precision.
- */
-const getAmountFromRawPrice = (
- priceObject: Dinero.Dinero,
- currency: Currency
-) => {
- return priceObject.convertPrecision( currency.minorUnit ).getAmount();
-};
-
-const productPriceValidation = ( value: string ) =>
- mustContain( value, ' ' );
-
-interface CartLineItemRowProps {
- lineItem: CartItem | Record< string, never >;
- onRemove?: () => void;
- tabIndex?: number;
-}
-
-/**
- * Cart line item table row component.
- */
-const CartLineItemRow: React.ForwardRefExoticComponent<
- CartLineItemRowProps & React.RefAttributes< HTMLTableRowElement >
-> = forwardRef< HTMLTableRowElement, CartLineItemRowProps >(
- (
- { lineItem, onRemove = () => void null, tabIndex },
- ref
- ): JSX.Element => {
- const {
- name: initialName = '',
- catalog_visibility: catalogVisibility = 'visible',
- short_description: shortDescription = '',
- description: fullDescription = '',
- low_stock_remaining: lowStockRemaining = null,
- show_backorder_badge: showBackorderBadge = false,
- quantity_limits: quantityLimits = {
- minimum: 1,
- maximum: 99,
- multiple_of: 1,
- editable: true,
- },
- sold_individually: soldIndividually = false,
- permalink = '',
- images = [],
- variation = [],
- item_data: itemData = [],
- prices = {
- currency_code: 'USD',
- currency_minor_unit: 2,
- currency_symbol: '$',
- currency_prefix: '$',
- currency_suffix: '',
- currency_decimal_separator: '.',
- currency_thousand_separator: ',',
- price: '0',
- regular_price: '0',
- sale_price: '0',
- price_range: null,
- raw_prices: {
- precision: 6,
- price: '0',
- regular_price: '0',
- sale_price: '0',
- },
- },
- totals = {
- currency_code: 'USD',
- currency_minor_unit: 2,
- currency_symbol: '$',
- currency_prefix: '$',
- currency_suffix: '',
- currency_decimal_separator: '.',
- currency_thousand_separator: ',',
- line_subtotal: '0',
- line_subtotal_tax: '0',
- },
- extensions,
- } = lineItem;
-
- const { quantity, setItemQuantity, removeItem, isPendingDelete } =
- useStoreCartItemQuantity( lineItem );
- const { dispatchStoreEvent } = useStoreEvents();
-
- // Prepare props to pass to the applyCheckoutFilter filter.
- // We need to pluck out receiveCart.
- // eslint-disable-next-line no-unused-vars
- const { receiveCart, ...cart } = useStoreCart();
- const arg = useMemo(
- () => ( {
- context: 'cart',
- cartItem: lineItem,
- cart,
- } ),
- [ lineItem, cart ]
- );
- const priceCurrency = getCurrencyFromPriceResponse( prices );
- const name = applyCheckoutFilter( {
- filterName: 'itemName',
- defaultValue: initialName,
- extensions,
- arg,
- } );
-
- const regularAmountSingle = Dinero( {
- amount: parseInt( prices.raw_prices.regular_price, 10 ),
- precision: prices.raw_prices.precision,
- } );
- const purchaseAmountSingle = Dinero( {
- amount: parseInt( prices.raw_prices.price, 10 ),
- precision: prices.raw_prices.precision,
- } );
- const saleAmountSingle =
- regularAmountSingle.subtract( purchaseAmountSingle );
- const saleAmount = saleAmountSingle.multiply( quantity );
- const totalsCurrency = getCurrencyFromPriceResponse( totals );
- let lineSubtotal = parseInt( totals.line_subtotal, 10 );
- if ( getSetting( 'displayCartPricesIncludingTax', false ) ) {
- lineSubtotal += parseInt( totals.line_subtotal_tax, 10 );
- }
- const subtotalPrice = Dinero( {
- amount: lineSubtotal,
- precision: totalsCurrency.minorUnit,
- } );
-
- const firstImage = images.length ? images[ 0 ] : {};
- const isProductHiddenFromCatalog =
- catalogVisibility === 'hidden' || catalogVisibility === 'search';
-
- const cartItemClassNameFilter = applyCheckoutFilter( {
- filterName: 'cartItemClass',
- defaultValue: '',
- extensions,
- arg,
- } );
-
- // Allow extensions to filter how the price is displayed. Ie: prepending or appending some values.
- const productPriceFormat = applyCheckoutFilter( {
- filterName: 'cartItemPrice',
- defaultValue: ' ',
- extensions,
- arg,
- validation: productPriceValidation,
- } );
-
- const subtotalPriceFormat = applyCheckoutFilter( {
- filterName: 'subtotalPriceFormat',
- defaultValue: ' ',
- extensions,
- arg,
- validation: productPriceValidation,
- } );
-
- const saleBadgePriceFormat = applyCheckoutFilter( {
- filterName: 'saleBadgePriceFormat',
- defaultValue: ' ',
- extensions,
- arg,
- validation: productPriceValidation,
- } );
-
- const showRemoveItemLink = applyCheckoutFilter( {
- filterName: 'showRemoveItemLink',
- defaultValue: true,
- extensions,
- arg,
- } );
-
- return (
-
- { /* If the image has no alt text, this link is unnecessary and can be hidden. */ }
-
- { /* We don't need to make it focusable, because product name has the same link. */ }
- { isProductHiddenFromCatalog ? (
-
- ) : (
-
-
-
- ) }
-
-
-
-
- { showBackorderBadge ? (
-
- ) : (
- !! lowStockRemaining && (
-
- )
- ) }
-
-
-
-
-
-
-
-
- { ! soldIndividually &&
- !! quantityLimits.editable && (
- {
- setItemQuantity( newQuantity );
- dispatchStoreEvent(
- 'cart-set-item-quantity',
- {
- product: lineItem,
- quantity: newQuantity,
- }
- );
- } }
- itemName={ name }
- />
- ) }
- { showRemoveItemLink && (
- {
- onRemove();
- removeItem();
- dispatchStoreEvent(
- 'cart-remove-item',
- {
- product: lineItem,
- quantity,
- }
- );
- speak(
- sprintf(
- /* translators: %s refers to the item name in the cart. */
- __(
- '%s has been removed from your cart.',
- 'woo-gutenberg-products-block'
- ),
- name
- )
- );
- } }
- disabled={ isPendingDelete }
- >
- { __(
- 'Remove item',
- 'woo-gutenberg-products-block'
- ) }
-
- ) }
-
-
-
-
-
-
-
- { quantity > 1 && (
-
- ) }
-
-
-
- );
- }
-);
-export default CartLineItemRow;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/index.tsx
deleted file mode 100644
index c978203d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/index.tsx
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { __ } from '@wordpress/i18n';
-import { CartResponseItem } from '@woocommerce/types';
-import { createRef, useEffect, useRef } from '@wordpress/element';
-import type { RefObject } from 'react';
-
-/**
- * Internal dependencies
- */
-import CartLineItemRow from './cart-line-item-row';
-import './style.scss';
-
-const placeholderRows = [ ...Array( 3 ) ].map( ( _x, i ) => (
-
-) );
-
-interface CartLineItemsTableProps {
- lineItems: CartResponseItem[];
- isLoading: boolean;
- className?: string;
-}
-
-const setRefs = ( lineItems: CartResponseItem[] ) => {
- const refs = {} as Record< string, RefObject< HTMLTableRowElement > >;
- lineItems.forEach( ( { key } ) => {
- refs[ key ] = createRef();
- } );
- return refs;
-};
-
-const CartLineItemsTable = ( {
- lineItems = [],
- isLoading = false,
- className,
-}: CartLineItemsTableProps ): JSX.Element => {
- const tableRef = useRef< HTMLTableElement | null >( null );
- const rowRefs = useRef( setRefs( lineItems ) );
- useEffect( () => {
- rowRefs.current = setRefs( lineItems );
- }, [ lineItems ] );
-
- const onRemoveRow = ( nextItemKey: string | null ) => () => {
- if (
- rowRefs?.current &&
- nextItemKey &&
- rowRefs.current[ nextItemKey ].current instanceof HTMLElement
- ) {
- ( rowRefs.current[ nextItemKey ].current as HTMLElement ).focus();
- } else if ( tableRef.current instanceof HTMLElement ) {
- tableRef.current.focus();
- }
- };
-
- const products = isLoading
- ? placeholderRows
- : lineItems.map( ( lineItem, i ) => {
- const nextItemKey =
- lineItems.length > i + 1 ? lineItems[ i + 1 ].key : null;
- return (
-
- );
- } );
-
- return (
-
-
-
-
-
- { __( 'Product', 'woo-gutenberg-products-block' ) }
-
-
-
-
- { __( 'Details', 'woo-gutenberg-products-block' ) }
-
-
-
-
- { __( 'Total', 'woo-gutenberg-products-block' ) }
-
-
-
-
- { products }
-
- );
-};
-
-export default CartLineItemsTable;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/style.scss
deleted file mode 100644
index 0bf564b5..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/cart-line-items-table/style.scss
+++ /dev/null
@@ -1,142 +0,0 @@
-table.wc-block-cart-items,
-table.wc-block-cart-items th,
-table.wc-block-cart-items td {
- // Override Storefront theme gray table background.
- background: none !important;
- // Remove borders on default themes.
- border: 0;
- margin: 0;
-}
-
-.editor-styles-wrapper table.wc-block-cart-items,
-table.wc-block-cart-items {
- width: 100%;
-
- .wc-block-cart-items__header {
- @include font-size( smaller );
- text-transform: uppercase;
-
- .wc-block-cart-items__header-image {
- width: 100px;
- }
- .wc-block-cart-items__header-product {
- visibility: hidden;
- }
- .wc-block-cart-items__header-total {
- width: 100px;
- text-align: right;
- }
- }
- .wc-block-cart-items__row {
- .wc-block-cart-item__image img {
- width: 100%;
- margin: 0;
- }
- .wc-block-cart-item__quantity {
- .wc-block-cart-item__remove-link {
- @include link-button();
- @include hover-effect();
- @include font-size( smaller );
-
- text-transform: none;
- white-space: nowrap;
- }
- }
- .wc-block-components-product-name {
- display: block;
- max-width: max-content;
- }
- .wc-block-cart-item__total {
- @include font-size( regular );
- text-align: right;
- line-height: inherit;
- }
- .wc-block-components-product-metadata {
- margin-bottom: 0.75em;
- }
-
- &.is-disabled {
- opacity: 0.5;
- pointer-events: none;
- transition: opacity 200ms ease;
- }
- }
-}
-
-.is-medium,
-.is-small,
-.is-mobile {
- table.wc-block-cart-items {
- td {
- padding: 0;
- }
- .wc-block-cart-items__header {
- display: none;
- }
- .wc-block-cart-item__remove-link {
- display: none;
- }
- &:not(.wc-block-mini-cart-items):not(:last-child) {
- .wc-block-cart-items__row {
- @include with-translucent-border( 0 0 1px );
- }
- }
- .wc-block-cart-items__row {
- display: grid;
- grid-template-columns: 80px 132px;
- padding: $gap 0;
-
- .wc-block-cart-item__image {
- grid-column-start: 1;
- grid-row-start: 1;
- padding-right: $gap;
- }
- .wc-block-cart-item__product {
- grid-column-start: 2;
- grid-column-end: 4;
- grid-row-start: 1;
- justify-self: stretch;
- padding: 0 $gap $gap 0;
- }
- .wc-block-cart-item__quantity {
- grid-column-start: 1;
- grid-row-start: 2;
- vertical-align: bottom;
- padding-right: $gap;
- align-self: end;
- padding-top: $gap;
- }
- .wc-block-cart-item__total {
- grid-row-start: 1;
-
- .wc-block-components-formatted-money-amount {
- display: inline-block;
- }
- }
- }
- }
-}
-
-.is-large.wc-block-cart {
- margin-bottom: 3em;
-
- .wc-block-cart-items {
- @include with-translucent-border( 0 0 1px );
-
- th {
- padding: 0.25rem $gap 0.25rem 0;
- white-space: nowrap;
- }
- td {
- @include with-translucent-border( 1px 0 0 );
- padding: $gap 0 $gap $gap;
- vertical-align: top;
- }
- th:last-child {
- padding-right: 0;
- }
- td:last-child {
- padding-right: $gap;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/index.js
deleted file mode 100644
index 5e1f0d21..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-export * from './address-form';
-export { default as CartLineItemsTable } from './cart-line-items-table';
-export { default as OrderSummary } from './order-summary';
-export { default as PlaceOrderButton } from './place-order-button';
-export { default as Policies } from './policies';
-export { default as ProductBackorderBadge } from './product-backorder-badge';
-export { default as ProductDetails } from './product-details';
-export { default as ProductImage } from './product-image';
-export { default as ProductLowStockBadge } from './product-low-stock-badge';
-export { default as ProductSummary } from './product-summary';
-export { default as ProductMetadata } from './product-metadata';
-export { default as ProductSaleBadge } from './product-sale-badge';
-export { default as ReturnToCartButton } from './return-to-cart-button';
-export { default as ShippingCalculator } from './shipping-calculator';
-export { default as ShippingLocation } from './shipping-location';
-export { default as ShippingRatesControl } from './shipping-rates-control';
-export { default as ShippingRatesControlPackage } from './shipping-rates-control-package';
-export { default as PaymentMethodIcons } from './payment-method-icons';
-export { default as PaymentMethodLabel } from './payment-method-label';
-export * from './totals';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/index.tsx
deleted file mode 100644
index 696db0fe..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/index.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * External dependencies
- */
-import {
- RadioControl,
- RadioControlOptionType,
-} from '@woocommerce/blocks-components';
-import { CartShippingPackageShippingRate } from '@woocommerce/types';
-
-interface LocalPickupSelectProps {
- title?: string | undefined;
- setSelectedOption: ( value: string ) => void;
- selectedOption: string;
- pickupLocations: CartShippingPackageShippingRate[];
- onSelectRate: ( value: string ) => void;
- renderPickupLocation: (
- location: CartShippingPackageShippingRate,
- pickupLocationsCount: number
- ) => RadioControlOptionType;
- packageCount: number;
-}
-/**
- * Local pickup select component, used to render a package title and local pickup options.
- */
-export const LocalPickupSelect = ( {
- title,
- setSelectedOption,
- selectedOption,
- pickupLocations,
- onSelectRate,
- renderPickupLocation,
- packageCount,
-}: LocalPickupSelectProps ) => {
- // Hacky way to check if there are multiple packages, this way is borrowed from `assets/js/base/components/cart-checkout/shipping-rates-control-package/index.tsx`
- // We have no built-in way of checking if other extensions have added packages.
- const multiplePackages =
- document.querySelectorAll(
- '.wc-block-components-local-pickup-select .wc-block-components-radio-control'
- ).length > 1;
- return (
-
- { multiplePackages && title ?
{ title }
: false }
-
{
- setSelectedOption( value );
- onSelectRate( value );
- } }
- selected={ selectedOption }
- options={ pickupLocations.map( ( location ) =>
- renderPickupLocation( location, packageCount )
- ) }
- />
-
- );
-};
-export default LocalPickupSelect;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/test/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/test/index.tsx
deleted file mode 100644
index 6d3bd6da..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/local-pickup-select/test/index.tsx
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * External dependencies
- */
-import { render, screen } from '@testing-library/react';
-import userEvent from '@testing-library/user-event';
-/**
- * Internal dependencies
- */
-import LocalPickupSelect from '..';
-
-describe( 'LocalPickupSelect', () => {
- const TestComponent = ( {
- selectedOptionOverride = null,
- onSelectRateOverride = null,
- }: {
- selectedOptionOverride?: null | ( ( value: string ) => void );
- onSelectRateOverride?: null | ( ( value: string ) => void );
- } ) => (
- {
- return {
- value: `${ location.rate_id }`,
- onChange: jest.fn(),
- label: `${ location.name }`,
- description: `${ location.description }`,
- };
- } }
- />
- );
- it( 'Does not render the title if only one package is present on the page', () => {
- render( );
- expect( screen.queryByText( 'Package 1' ) ).not.toBeInTheDocument();
- } );
- it( 'Does render the title if more than one package is present on the page', () => {
- const { rerender } = render(
-
- );
- // Render twice so our component can check the DOM correctly.
- rerender(
- <>
-
-
- >
- );
- rerender(
- <>
-
-
- >
- );
-
- expect( screen.getByText( 'Package 1' ) ).toBeInTheDocument();
- } );
- it( 'Calls the correct functions when changing selected option', () => {
- const setSelectedOption = jest.fn();
- const onSelectRate = jest.fn();
- render(
-
- );
- userEvent.click( screen.getByText( 'Store 2' ) );
- expect( setSelectedOption ).toHaveBeenLastCalledWith( '2' );
- expect( onSelectRate ).toHaveBeenLastCalledWith( '2' );
- userEvent.click( screen.getByText( 'Store 1' ) );
- expect( setSelectedOption ).toHaveBeenLastCalledWith( '1' );
- expect( onSelectRate ).toHaveBeenLastCalledWith( '1' );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/index.tsx
deleted file mode 100644
index 2138ac7e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/index.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useContainerWidthContext } from '@woocommerce/base-context';
-import { Panel } from '@woocommerce/blocks-components';
-import type { CartItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import OrderSummaryItem from './order-summary-item';
-import './style.scss';
-
-interface OrderSummaryProps {
- cartItems: CartItem[];
-}
-
-const OrderSummary = ( {
- cartItems = [],
-}: OrderSummaryProps ): null | JSX.Element => {
- const { isLarge, hasContainerWidth } = useContainerWidthContext();
-
- if ( ! hasContainerWidth ) {
- return null;
- }
-
- return (
-
- { __( 'Order summary', 'woo-gutenberg-products-block' ) }
-
- }
- >
-
- { cartItems.map( ( cartItem ) => {
- return (
-
- );
- } ) }
-
-
- );
-};
-
-export default OrderSummary;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/order-summary-item.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/order-summary-item.tsx
deleted file mode 100644
index 9e02428b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/order-summary-item.tsx
+++ /dev/null
@@ -1,212 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { sprintf, _n } from '@wordpress/i18n';
-import { Label } from '@woocommerce/blocks-components';
-import ProductPrice from '@woocommerce/base-components/product-price';
-import ProductName from '@woocommerce/base-components/product-name';
-import {
- getCurrencyFromPriceResponse,
- formatPrice,
-} from '@woocommerce/price-format';
-import { applyCheckoutFilter, mustContain } from '@woocommerce/blocks-checkout';
-import Dinero from 'dinero.js';
-import { getSetting } from '@woocommerce/settings';
-import { useMemo } from '@wordpress/element';
-import { useStoreCart } from '@woocommerce/base-context/hooks';
-import { CartItem, isString } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import ProductBackorderBadge from '../product-backorder-badge';
-import ProductImage from '../product-image';
-import ProductLowStockBadge from '../product-low-stock-badge';
-import ProductMetadata from '../product-metadata';
-
-const productPriceValidation = ( value: string ): true | never =>
- mustContain( value, ' ' );
-
-interface OrderSummaryProps {
- cartItem: CartItem;
-}
-
-const OrderSummaryItem = ( { cartItem }: OrderSummaryProps ): JSX.Element => {
- const {
- images,
- low_stock_remaining: lowStockRemaining,
- show_backorder_badge: showBackorderBadge,
- name: initialName,
- permalink,
- prices,
- quantity,
- short_description: shortDescription,
- description: fullDescription,
- item_data: itemData,
- variation,
- totals,
- extensions,
- } = cartItem;
-
- // Prepare props to pass to the applyCheckoutFilter filter.
- // We need to pluck out receiveCart.
- // eslint-disable-next-line no-unused-vars
- const { receiveCart, ...cart } = useStoreCart();
-
- const arg = useMemo(
- () => ( {
- context: 'summary',
- cartItem,
- cart,
- } ),
- [ cartItem, cart ]
- );
-
- const priceCurrency = getCurrencyFromPriceResponse( prices );
-
- const name = applyCheckoutFilter( {
- filterName: 'itemName',
- defaultValue: initialName,
- extensions,
- arg,
- } );
-
- const regularPriceSingle = Dinero( {
- amount: parseInt( prices.raw_prices.regular_price, 10 ),
- precision: isString( prices.raw_prices.precision )
- ? parseInt( prices.raw_prices.precision, 10 )
- : prices.raw_prices.precision,
- } )
- .convertPrecision( priceCurrency.minorUnit )
- .getAmount();
- const priceSingle = Dinero( {
- amount: parseInt( prices.raw_prices.price, 10 ),
- precision: isString( prices.raw_prices.precision )
- ? parseInt( prices.raw_prices.precision, 10 )
- : prices.raw_prices.precision,
- } )
- .convertPrecision( priceCurrency.minorUnit )
- .getAmount();
- const totalsCurrency = getCurrencyFromPriceResponse( totals );
-
- let lineSubtotal = parseInt( totals.line_subtotal, 10 );
- if ( getSetting( 'displayCartPricesIncludingTax', false ) ) {
- lineSubtotal += parseInt( totals.line_subtotal_tax, 10 );
- }
- const subtotalPrice = Dinero( {
- amount: lineSubtotal,
- precision: totalsCurrency.minorUnit,
- } ).getAmount();
- const subtotalPriceFormat = applyCheckoutFilter( {
- filterName: 'subtotalPriceFormat',
- defaultValue: ' ',
- extensions,
- arg,
- validation: productPriceValidation,
- } );
-
- // Allow extensions to filter how the price is displayed. Ie: prepending or appending some values.
- const productPriceFormat = applyCheckoutFilter( {
- filterName: 'cartItemPrice',
- defaultValue: ' ',
- extensions,
- arg,
- validation: productPriceValidation,
- } );
-
- const cartItemClassNameFilter = applyCheckoutFilter( {
- filterName: 'cartItemClass',
- defaultValue: '',
- extensions,
- arg,
- } );
-
- return (
-
-
-
-
-
- { showBackorderBadge ? (
-
- ) : (
- !! lowStockRemaining && (
-
- )
- ) }
-
-
-
- { sprintf(
- /* translators: %1$d is the number of items, %2$s is the item name and %3$s is the total price including the currency symbol. */
- _n(
- 'Total price for %1$d %2$s item: %3$s',
- 'Total price for %1$d %2$s items: %3$s',
- quantity,
- 'woo-gutenberg-products-block'
- ),
- quantity,
- name,
- formatPrice( subtotalPrice, totalsCurrency )
- ) }
-
-
-
- );
-};
-
-export default OrderSummaryItem;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/style.scss
deleted file mode 100644
index d03c8a33..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/style.scss
+++ /dev/null
@@ -1,104 +0,0 @@
-.wc-block-components-order-summary {
-
- .wc-block-components-panel__button {
- padding-top: 0;
- margin-top: 0;
- }
-
- .wc-block-components-panel__content {
- margin-bottom: 0;
- }
-
- .wc-block-components-order-summary__content {
- display: table;
- width: 100%;
- }
-
- .wc-block-components-order-summary-item {
- @include with-translucent-border(0 0 1px);
- @include font-size(small);
- display: flex;
- padding-bottom: 1px;
- padding-top: $gap;
- width: 100%;
-
- &:first-child {
- padding-top: 0;
- }
-
- &:last-child {
- > div {
- padding-bottom: 0;
- }
-
- &::after {
- display: none;
- }
- }
-
- .wc-block-components-product-metadata {
- @include font-size(regular);
- }
- }
-
- .wc-block-components-order-summary-item__image,
- .wc-block-components-order-summary-item__description {
- display: table-cell;
- vertical-align: top;
- }
-
- .wc-block-components-order-summary-item__image {
- width: #{$gap-large * 2};
- padding-bottom: $gap;
- position: relative;
-
- > img {
- width: #{$gap-large * 2};
- max-width: #{$gap-large * 2};
- }
- }
-
- .wc-block-components-order-summary-item__quantity {
- align-items: center;
- background: #fff;
- border: 2px solid;
- border-radius: 1em;
- box-shadow: 0 0 0 2px #fff;
- color: #000;
- display: flex;
- line-height: 1;
- min-height: 20px;
- padding: 0 0.4em;
- position: absolute;
- justify-content: center;
- min-width: 20px;
- right: 0;
- top: 0;
- transform: translate(50%, -50%);
- white-space: nowrap;
- z-index: 1;
- }
-
- .wc-block-components-order-summary-item__description {
- padding-left: $gap-large;
- padding-right: $gap-small;
- padding-bottom: $gap;
-
- p,
- .wc-block-components-product-metadata {
- line-height: 1.375;
- margin-top: #{ ($gap-large - $gap) * 0.5 };
- }
- }
-
- .wc-block-components-order-summary-item__total-price {
- font-weight: bold;
- margin-left: auto;
- text-align: right;
- }
-
-
- .wc-block-components-order-summary-item__individual-prices {
- display: block;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/test/index.js
deleted file mode 100644
index 352eb722..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/order-summary/test/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * External dependencies
- */
-import { render, screen } from '@testing-library/react';
-import { previewCart } from '@woocommerce/resource-previews';
-
-/**
- * Internal dependencies
- */
-import OrderSummary from '../index';
-
-jest.mock( '@woocommerce/base-context', () => ( {
- ...jest.requireActual( '@woocommerce/base-context' ),
- useContainerWidthContext: () => ( {
- isLarge: true,
- hasContainerWidth: true,
- } ),
-} ) );
-
-describe( 'Order Summary', () => {
- it( 'renders correct cart line subtotal when currency has 0 decimals', async () => {
- render(
-
- );
-
- expect( screen.getByText( '16€' ) ).toBeTruthy();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/common-icons.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/common-icons.ts
deleted file mode 100644
index 4e9b5afc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/common-icons.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * External dependencies
- */
-import { WC_BLOCKS_IMAGE_URL } from '@woocommerce/block-settings';
-import type { PaymentMethodIcon } from '@woocommerce/types';
-
-/**
- * Array of common assets.
- */
-export const commonIcons: PaymentMethodIcon[] = [
- {
- id: 'alipay',
- alt: 'Alipay',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/alipay.svg',
- },
- {
- id: 'amex',
- alt: 'American Express',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/amex.svg',
- },
- {
- id: 'bancontact',
- alt: 'Bancontact',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/bancontact.svg',
- },
- {
- id: 'diners',
- alt: 'Diners Club',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/diners.svg',
- },
- {
- id: 'discover',
- alt: 'Discover',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/discover.svg',
- },
- {
- id: 'eps',
- alt: 'EPS',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/eps.svg',
- },
- {
- id: 'giropay',
- alt: 'Giropay',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/giropay.svg',
- },
- {
- id: 'ideal',
- alt: 'iDeal',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/ideal.svg',
- },
- {
- id: 'jcb',
- alt: 'JCB',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/jcb.svg',
- },
- {
- id: 'laser',
- alt: 'Laser',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/laser.svg',
- },
- {
- id: 'maestro',
- alt: 'Maestro',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/maestro.svg',
- },
- {
- id: 'mastercard',
- alt: 'Mastercard',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/mastercard.svg',
- },
- {
- id: 'multibanco',
- alt: 'Multibanco',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/multibanco.svg',
- },
- {
- id: 'p24',
- alt: 'Przelewy24',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/p24.svg',
- },
- {
- id: 'sepa',
- alt: 'Sepa',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/sepa.svg',
- },
- {
- id: 'sofort',
- alt: 'Sofort',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/sofort.svg',
- },
- {
- id: 'unionpay',
- alt: 'Union Pay',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/unionpay.svg',
- },
- {
- id: 'visa',
- alt: 'Visa',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/visa.svg',
- },
- {
- id: 'wechat',
- alt: 'WeChat',
- src: WC_BLOCKS_IMAGE_URL + 'payment-methods/wechat.svg',
- },
-];
-
-/**
- * For a given ID, see if a common icon exists and return it's props.
- *
- * @param {string} id Icon ID.
- */
-export const getCommonIconProps = (
- id: string
-): PaymentMethodIcon | Record< string, unknown > => {
- return (
- commonIcons.find( ( icon ) => {
- return icon.id === id;
- } ) || {}
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/index.tsx
deleted file mode 100644
index c4f8d4ac..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/index.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import type { PaymentMethodIcons as PaymentMethodIconsType } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import PaymentMethodIcon from './payment-method-icon';
-import { getCommonIconProps } from './common-icons';
-import { normalizeIconConfig } from './utils';
-import './style.scss';
-
-interface PaymentMethodIconsProps {
- icons: PaymentMethodIconsType;
- align?: 'left' | 'right' | 'center';
- className?: string;
-}
-/**
- * For a given list of icons, render each as a list item, using common icons
- * where available.
- */
-export const PaymentMethodIcons = ( {
- icons = [],
- align = 'center',
- className,
-}: PaymentMethodIconsProps ): JSX.Element | null => {
- const iconConfigs = normalizeIconConfig( icons );
-
- if ( iconConfigs.length === 0 ) {
- return null;
- }
-
- const containerClass = classnames(
- 'wc-block-components-payment-method-icons',
- {
- 'wc-block-components-payment-method-icons--align-left':
- align === 'left',
- 'wc-block-components-payment-method-icons--align-right':
- align === 'right',
- },
- className
- );
-
- return (
-
- { iconConfigs.map( ( icon ) => {
- const iconProps = {
- ...icon,
- ...getCommonIconProps( icon.id ),
- };
- return (
-
- );
- } ) }
-
- );
-};
-
-export default PaymentMethodIcons;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/payment-method-icon.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/payment-method-icon.tsx
deleted file mode 100644
index 6332814b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/payment-method-icon.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Get a class name for an icon.
- *
- * @param {string} id Icon ID.
- */
-const getIconClassName = ( id: string ): string => {
- return `wc-block-components-payment-method-icon wc-block-components-payment-method-icon--${ id }`;
-};
-
-interface PaymentMethodIconProps {
- id: string;
- src?: string | null;
- alt?: string;
-}
-/**
- * Return an element for an icon.
- *
- * @param {Object} props Incoming props for component.
- * @param {string} props.id Id for component.
- * @param {string|null} props.src Optional src value for icon.
- * @param {string} props.alt Optional alt value for icon.
- */
-const PaymentMethodIcon = ( {
- id,
- src = null,
- alt = '',
-}: PaymentMethodIconProps ): JSX.Element | null => {
- if ( ! src ) {
- return null;
- }
- return ;
-};
-
-export default PaymentMethodIcon;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/style.scss
deleted file mode 100644
index e1cc1804..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/style.scss
+++ /dev/null
@@ -1,48 +0,0 @@
-.wc-block-components-payment-method-icons {
- margin: 0 0 #{$gap - 2px};
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- justify-content: center;
-
- .wc-block-components-payment-method-icon {
- display: inline-block;
- margin: 0 4px 2px;
- padding: 0;
- width: auto;
- max-width: 38px;
- height: 24px;
- max-height: 24px;
- }
-
- &--align-left {
- justify-content: flex-start;
-
- .wc-block-components-payment-method-icon {
- margin-left: 0;
- margin-right: 8px;
- }
- }
-
- &--align-right {
- justify-content: flex-end;
-
- .wc-block-components-payment-method-icon {
- margin-right: 0;
- margin-left: 8px;
- }
- }
-
- &:last-child {
- margin-bottom: 0;
- }
-}
-
-.is-mobile,
-.is-small {
- .wc-block-components-payment-method-icons {
- .wc-block-components-payment-method-icon {
- height: 16px;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/utils.ts
deleted file mode 100644
index 62a37fd7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-icons/utils.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * External dependencies
- */
-import type { PaymentMethodIcon, PaymentMethodIcons } from '@woocommerce/types';
-import { isString } from '@woocommerce/types';
-
-/**
- * For an array of icons, normalize into objects and remove duplicates.
- */
-export const normalizeIconConfig = (
- icons: PaymentMethodIcons
-): PaymentMethodIcon[] => {
- const normalizedIcons: Record< string, PaymentMethodIcon > = {};
-
- icons.forEach( ( raw ) => {
- let icon: Partial< PaymentMethodIcon > = {};
-
- if ( typeof raw === 'string' ) {
- icon = {
- id: raw,
- alt: raw,
- src: null,
- };
- }
-
- if ( typeof raw === 'object' ) {
- icon = {
- id: raw.id || '',
- alt: raw.alt || '',
- src: raw.src || null,
- };
- }
-
- if ( icon.id && isString( icon.id ) && ! normalizedIcons[ icon.id ] ) {
- normalizedIcons[ icon.id ] = icon;
- }
- } );
-
- return Object.values( normalizedIcons );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/index.tsx
deleted file mode 100644
index b12ee242..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/index.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { checkPayment } from '@woocommerce/icons';
-import {
- Icon,
- institution as bank,
- currencyDollar as bill,
- payment as card,
-} from '@wordpress/icons';
-import { isString, objectHasProp } from '@woocommerce/types';
-import { useCallback } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface NamedIcons {
- bank: JSX.Element;
- bill: JSX.Element;
- card: JSX.Element;
- checkPayment: JSX.Element;
-}
-
-const namedIcons: NamedIcons = {
- bank,
- bill,
- card,
- checkPayment,
-};
-
-interface PaymentMethodLabelProps {
- icon: '' | keyof NamedIcons | SVGElement;
- text: string;
-}
-
-/**
- * Exposed to payment methods for the label shown on checkout. Allows icons to be added as well as
- * text.
- *
- * @param {Object} props Component props.
- * @param {*} props.icon Show an icon beside the text if provided. Can be a string to use a named
- * icon, or an SVG element.
- * @param {string} props.text Text shown next to icon.
- */
-export const PaymentMethodLabel = ( {
- icon = '',
- text = '',
-}: PaymentMethodLabelProps ): JSX.Element => {
- const hasIcon = !! icon;
- const hasNamedIcon = useCallback(
- (
- iconToCheck: '' | keyof NamedIcons | SVGElement
- ): iconToCheck is keyof NamedIcons =>
- hasIcon &&
- isString( iconToCheck ) &&
- objectHasProp( namedIcons, iconToCheck ),
- [ hasIcon ]
- );
- const className = classnames( 'wc-block-components-payment-method-label', {
- 'wc-block-components-payment-method-label--with-icon': hasIcon,
- } );
-
- return (
-
- { hasNamedIcon( icon ) ? (
-
- ) : (
- icon
- ) }
- { text }
-
- );
-};
-
-export default PaymentMethodLabel;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/style.scss
deleted file mode 100644
index 1de10c9e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/payment-method-label/style.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-.wc-block-components-payment-method-label--with-icon {
- display: inline-block;
- vertical-align: middle;
- > img,
- > svg {
- vertical-align: middle;
- margin: -2px 4px 0 0;
- }
-}
-
-.is-mobile,
-.is-small {
- .wc-block-components-payment-method-label--with-icon {
- > img,
- > svg {
- display: none;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/index.tsx
deleted file mode 100644
index 40423ece..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/index.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import { useSelect } from '@wordpress/data';
-import { isObject, objectHasProp } from '@woocommerce/types';
-import { isPackageRateCollectable } from '@woocommerce/base-utils';
-
-/**
- * Shows a formatted pickup location.
- */
-const PickupLocation = (): JSX.Element | null => {
- const { pickupAddress } = useSelect( ( select ) => {
- const cartShippingRates = select( 'wc/store/cart' ).getShippingRates();
-
- const flattenedRates = cartShippingRates.flatMap(
- ( cartShippingRate ) => cartShippingRate.shipping_rates
- );
- const selectedCollectableRate = flattenedRates.find(
- ( rate ) => rate.selected && isPackageRateCollectable( rate )
- );
-
- // If the rate has an address specified in its metadata.
- if (
- isObject( selectedCollectableRate ) &&
- objectHasProp( selectedCollectableRate, 'meta_data' )
- ) {
- const selectedRateMetaData = selectedCollectableRate.meta_data.find(
- ( meta ) => meta.key === 'pickup_address'
- );
- if (
- isObject( selectedRateMetaData ) &&
- objectHasProp( selectedRateMetaData, 'value' ) &&
- selectedRateMetaData.value
- ) {
- const selectedRatePickupAddress = selectedRateMetaData.value;
- return {
- pickupAddress: selectedRatePickupAddress,
- };
- }
- }
-
- if ( isObject( selectedCollectableRate ) ) {
- return {
- pickupAddress: undefined,
- };
- }
- return {
- pickupAddress: undefined,
- };
- } );
-
- // If the method does not contain an address, or the method supporting collection was not found, return early.
- if ( typeof pickupAddress === 'undefined' ) {
- return null;
- }
-
- // Show the pickup method's name if we don't have an address to show.
- return (
-
- { sprintf(
- /* translators: %s: shipping method name, e.g. "Amazon Locker" */
- __( 'Collection from %s', 'woo-gutenberg-products-block' ),
- pickupAddress
- ) + ' ' }
-
- );
-};
-
-export default PickupLocation;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/test/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/test/index.tsx
deleted file mode 100644
index 31f81fa8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/pickup-location/test/index.tsx
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * External dependencies
- */
-import { render, screen } from '@testing-library/react';
-import { CART_STORE_KEY, CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-import { dispatch } from '@wordpress/data';
-import { previewCart } from '@woocommerce/resource-previews';
-import PickupLocation from '@woocommerce/base-components/cart-checkout/pickup-location';
-
-jest.mock( '@woocommerce/settings', () => {
- const originalModule = jest.requireActual( '@woocommerce/settings' );
-
- return {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore We know @woocommerce/settings is an object.
- ...originalModule,
- getSetting: ( setting: string, ...rest: unknown[] ) => {
- if ( setting === 'localPickupEnabled' ) {
- return true;
- }
- if ( setting === 'collectableMethodIds' ) {
- return [ 'pickup_location' ];
- }
- return originalModule.getSetting( setting, ...rest );
- },
- };
-} );
-describe( 'PickupLocation', () => {
- it( `renders an address if one is set in the methods metadata`, async () => {
- dispatch( CHECKOUT_STORE_KEY ).setPrefersCollection( true );
-
- // Deselect the default selected rate and select pickup_location:1 rate.
- const currentlySelectedIndex =
- previewCart.shipping_rates[ 0 ].shipping_rates.findIndex(
- ( rate ) => rate.selected
- );
- previewCart.shipping_rates[ 0 ].shipping_rates[
- currentlySelectedIndex
- ].selected = false;
- const pickupRateIndex =
- previewCart.shipping_rates[ 0 ].shipping_rates.findIndex(
- ( rate ) => rate.method_id === 'pickup_location'
- );
- previewCart.shipping_rates[ 0 ].shipping_rates[
- pickupRateIndex
- ].selected = true;
-
- dispatch( CART_STORE_KEY ).receiveCart( previewCart );
-
- render( );
- expect(
- screen.getByText(
- /Collection from 123 Easy Street, New York, 12345/
- )
- ).toBeInTheDocument();
- } );
- it( 'renders no address if one is not set in the methods metadata', async () => {
- dispatch( CHECKOUT_STORE_KEY ).setPrefersCollection( true );
-
- // Deselect the default selected rate and select pickup_location:1 rate.
- const currentlySelectedIndex =
- previewCart.shipping_rates[ 0 ].shipping_rates.findIndex(
- ( rate ) => rate.selected
- );
- previewCart.shipping_rates[ 0 ].shipping_rates[
- currentlySelectedIndex
- ].selected = false;
- const pickupRateIndex =
- previewCart.shipping_rates[ 0 ].shipping_rates.findIndex(
- ( rate ) => rate.rate_id === 'pickup_location:2'
- );
- previewCart.shipping_rates[ 0 ].shipping_rates[
- pickupRateIndex
- ].selected = true;
-
- // Set the pickup_location metadata value to an empty string in the selected pickup rate.
- const addressKeyIndex = previewCart.shipping_rates[ 0 ].shipping_rates[
- pickupRateIndex
- ].meta_data.findIndex(
- ( metaData ) => metaData.key === 'pickup_address'
- );
- previewCart.shipping_rates[ 0 ].shipping_rates[
- pickupRateIndex
- ].meta_data[ addressKeyIndex ].value = '';
-
- dispatch( CART_STORE_KEY ).receiveCart( previewCart );
-
- render( );
- expect(
- screen.queryByText( /Collection from / )
- ).not.toBeInTheDocument();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/place-order-button/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/place-order-button/index.tsx
deleted file mode 100644
index 3c5b3b3d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/place-order-button/index.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { useCheckoutSubmit } from '@woocommerce/base-context/hooks';
-import { Icon, check } from '@wordpress/icons';
-import Button from '@woocommerce/base-components/button';
-
-interface PlaceOrderButton {
- label: string;
- fullWidth?: boolean | undefined;
-}
-
-const PlaceOrderButton = ( {
- label,
- fullWidth = false,
-}: PlaceOrderButton ): JSX.Element => {
- const {
- onSubmit,
- isCalculating,
- isDisabled,
- waitingForProcessing,
- waitingForRedirect,
- } = useCheckoutSubmit();
-
- return (
-
- { waitingForRedirect ? : label }
-
- );
-};
-
-export default PlaceOrderButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/index.tsx
deleted file mode 100644
index 0ce7df61..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/index.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import {
- PRIVACY_URL,
- TERMS_URL,
- PRIVACY_PAGE_NAME,
- TERMS_PAGE_NAME,
-} from '@woocommerce/block-settings';
-import { decodeEntities } from '@wordpress/html-entities';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-const Policies = (): JSX.Element => {
- return (
-
- );
-};
-
-export default Policies;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/style.scss
deleted file mode 100644
index b7a34f13..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/policies/style.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-.editor-styles-wrapper .wc-block-components-checkout-policies,
-.wc-block-components-checkout-policies {
- @include font-size(smaller);
- text-align: center;
- list-style: none outside;
- line-height: 1;
- margin: $gap-large 0;
-}
-
-.wc-block-components-checkout-policies__item {
- list-style: none outside;
- display: inline-block;
- padding: 0 0.25em;
- margin: 0;
-
- &:not(:first-child) {
- border-left: 1px solid $gray-400;
- }
-
- > a {
- color: inherit;
- padding: 0 0.25em;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-backorder-badge/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-backorder-badge/index.tsx
deleted file mode 100644
index f6105304..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-backorder-badge/index.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-
-/**
- * Internal dependencies
- */
-import ProductBadge from '../product-badge';
-
-/**
- * Returns a backorder badge.
- */
-const ProductBackorderBadge = (): JSX.Element => {
- return (
-
- { __( 'Available on backorder', 'woo-gutenberg-products-block' ) }
-
- );
-};
-
-export default ProductBackorderBadge;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/index.tsx
deleted file mode 100644
index 63b91f37..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/index.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * External dependencies
- */
-import classNames from 'classnames';
-import type { ReactNode } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface ProductBadgeProps {
- children?: ReactNode;
- className?: string;
-}
-const ProductBadge = ( {
- children,
- className,
-}: ProductBadgeProps ): JSX.Element => {
- return (
-
- { children }
-
- );
-};
-
-export default ProductBadge;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/style.scss
deleted file mode 100644
index 67768259..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-badge/style.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-.wc-block-components-product-badge {
- @include font-size(smaller);
- border-radius: $universal-border-radius;
- border: 1px solid;
- display: inline-block;
- font-weight: 600;
- padding: 0 0.66em;
- text-transform: uppercase;
- white-space: nowrap;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/index.tsx
deleted file mode 100644
index 1202e1d8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/index.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * External dependencies
- */
-import { paramCase as kebabCase } from 'change-case';
-import { decodeEntities } from '@wordpress/html-entities';
-import type { ProductResponseItemData } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface ProductDetailsProps {
- details: ProductResponseItemData[];
-}
-// Component to display cart item data and variations.
-const ProductDetails = ( {
- details = [],
-}: ProductDetailsProps ): JSX.Element | null => {
- if ( ! Array.isArray( details ) ) {
- return null;
- }
-
- details = details.filter( ( detail ) => ! detail.hidden );
-
- if ( details.length === 0 ) {
- return null;
- }
-
- return (
-
- { details.map( ( detail ) => {
- // Support both `key` and `name` props
- const name = detail?.key || detail.name || '';
- const className =
- detail?.className ||
- ( name
- ? `wc-block-components-product-details__${ kebabCase(
- name
- ) }`
- : '' );
- return (
-
- { name && (
- <>
-
- { decodeEntities( name ) }:
- { ' ' }
- >
- ) }
-
- { decodeEntities( detail.display || detail.value ) }
-
-
- );
- } ) }
-
- );
-};
-
-export default ProductDetails;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/style.scss
deleted file mode 100644
index e5e887d7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/style.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-// Extra class added for specificity so styles are applied in the editor.
-.wc-block-components-product-details.wc-block-components-product-details {
- list-style: none;
- margin: 0.5em 0;
- padding: 0;
-
- &:last-of-type {
- margin-bottom: 0;
- }
-
- li {
- margin-left: 0;
- }
-}
-
-.wc-block-components-product-details__name,
-.wc-block-components-product-details__value {
- display: inline-block;
-}
-
-.is-large:not(.wc-block-checkout) {
- .wc-block-components-product-details__name {
- font-weight: bold;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap
deleted file mode 100644
index 37a5d3ce..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/__snapshots__/index.js.snap
+++ /dev/null
@@ -1,77 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ProductDetails should not render hidden details 1`] = `
-
-
-
- LOREM
- :
-
-
-
- IPSUM
-
-
-
-`;
-
-exports[`ProductDetails should not rendering anything if all details are hidden 1`] = `null`;
-
-exports[`ProductDetails should not rendering anything if details is an empty array 1`] = `null`;
-
-exports[`ProductDetails should render details 1`] = `
-
-
-
- Lorem
- :
-
-
-
- Ipsum
-
-
-
-
- LOREM
- :
-
-
-
- IPSUM
-
-
-
-
-
- Ipsum
-
-
-
-`;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/index.js
deleted file mode 100644
index 1dcd44aa..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-details/test/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer from 'react-test-renderer';
-
-/**
- * Internal dependencies
- */
-import ProductDetails from '..';
-
-describe( 'ProductDetails', () => {
- test( 'should render details', () => {
- const details = [
- { name: 'Lorem', value: 'Ipsum' },
- { name: 'LOREM', value: 'Ipsum', display: 'IPSUM' },
- { value: 'Ipsum' },
- ];
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-
- test( 'should not render hidden details', () => {
- const details = [
- { name: 'Lorem', value: 'Ipsum', hidden: true },
- { name: 'LOREM', value: 'Ipsum', display: 'IPSUM' },
- ];
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-
- test( 'should not rendering anything if all details are hidden', () => {
- const details = [
- { name: 'Lorem', value: 'Ipsum', hidden: true },
- { name: 'LOREM', value: 'Ipsum', display: 'IPSUM', hidden: true },
- ];
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-
- test( 'should not rendering anything if details is an empty array', () => {
- const details = [];
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-image/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-image/index.tsx
deleted file mode 100644
index f904a7e2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-image/index.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * External dependencies
- */
-import { decodeEntities } from '@wordpress/html-entities';
-import { PLACEHOLDER_IMG_SRC } from '@woocommerce/settings';
-
-interface ProductImageProps {
- image: { alt?: string; thumbnail?: string };
- fallbackAlt: string;
-}
-/**
- * Formats and returns an image element.
- *
- * @param {Object} props Incoming props for the component.
- * @param {Object} props.image Image properties.
- */
-
-const ProductImage = ( {
- image = {},
- fallbackAlt = '',
-}: ProductImageProps ): JSX.Element => {
- const imageProps = image.thumbnail
- ? {
- src: image.thumbnail,
- alt:
- decodeEntities( image.alt ) ||
- fallbackAlt ||
- 'Product Image',
- }
- : {
- src: PLACEHOLDER_IMG_SRC,
- alt: '',
- };
-
- return ;
-};
-
-export default ProductImage;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-low-stock-badge/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-low-stock-badge/index.tsx
deleted file mode 100644
index 8c200fbc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-low-stock-badge/index.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-
-/**
- * Internal dependencies
- */
-import ProductBadge from '../product-badge';
-
-interface ProductLowStockBadgeProps {
- lowStockRemaining: number | null;
-}
-/**
- * Returns a low stock badge.
- *
- * @param {Object} props Incoming props for the component.
- * @param {number} props.lowStockRemaining Whether or not there is low stock remaining.
- */
-const ProductLowStockBadge = ( {
- lowStockRemaining,
-}: ProductLowStockBadgeProps ): JSX.Element | null => {
- if ( ! lowStockRemaining ) {
- return null;
- }
-
- return (
-
- { sprintf(
- /* translators: %d stock amount (number of items in stock for product) */
- __( '%d left in stock', 'woo-gutenberg-products-block' ),
- lowStockRemaining
- ) }
-
- );
-};
-
-export default ProductLowStockBadge;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/index.tsx
deleted file mode 100644
index d7a265a8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/index.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * External dependencies
- */
-import { ProductResponseItemData, CartVariationItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import ProductDetails from '../product-details';
-import ProductSummary from '../product-summary';
-import './style.scss';
-
-interface ProductMetadataProps {
- shortDescription?: string;
- fullDescription?: string;
- itemData: ProductResponseItemData[];
- variation?: CartVariationItem[];
-}
-
-const ProductMetadata = ( {
- shortDescription = '',
- fullDescription = '',
- itemData = [],
- variation = [],
-}: ProductMetadataProps ): JSX.Element => {
- return (
-
-
-
-
( {
- key: attribute,
- value,
- } ) ) }
- />
-
- );
-};
-
-export default ProductMetadata;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/style.scss
deleted file mode 100644
index 7eb90150..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-metadata/style.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.wc-block-components-product-metadata {
- @include font-size(smaller);
-
- .wc-block-components-product-metadata__description > p,
- .wc-block-components-product-metadata__variation-data {
- margin: 0.25em 0;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-sale-badge/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-sale-badge/index.tsx
deleted file mode 100644
index 2edef134..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-sale-badge/index.tsx
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * External dependencies
- */
-import { createInterpolateElement } from '@wordpress/element';
-import { __, sprintf } from '@wordpress/i18n';
-import { FormattedMonetaryAmount } from '@woocommerce/blocks-components';
-import type { Currency } from '@woocommerce/price-format';
-
-/**
- * Internal dependencies
- */
-import ProductBadge from '../product-badge';
-
-interface ProductSaleBadgeProps {
- currency: Currency;
- saleAmount: number;
- format: string;
-}
-/**
- * ProductSaleBadge
- *
- * @param {Object} props Incoming props.
- * @param {Object} props.currency Currency object.
- * @param {number} props.saleAmount Discounted amount.
- * @param {string} [props.format] Format to change the price.
- * @return {*} The component.
- */
-const ProductSaleBadge = ( {
- currency,
- saleAmount,
- format = ' ',
-}: ProductSaleBadgeProps ): JSX.Element | null => {
- if ( ! saleAmount || saleAmount <= 0 ) {
- return null;
- }
- if ( ! format.includes( ' ' ) ) {
- format = ' ';
- // eslint-disable-next-line no-console
- console.error( 'Price formats need to include the ` ` tag.' );
- }
-
- const formattedMessage = sprintf(
- /* translators: %s will be replaced by the discount amount */
- __( `Save %s`, 'woo-gutenberg-products-block' ),
- format
- );
-
- return (
-
- { createInterpolateElement( formattedMessage, {
- price: (
-
- ),
- } ) }
-
- );
-};
-
-export default ProductSaleBadge;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-summary/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-summary/index.tsx
deleted file mode 100644
index 4df04bb0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/product-summary/index.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * External dependencies
- */
-import Summary from '@woocommerce/base-components/summary';
-import { blocksConfig } from '@woocommerce/block-settings';
-
-interface ProductSummaryProps {
- className?: string;
- shortDescription?: string;
- fullDescription?: string;
-}
-/**
- * Returns an element containing a summary of the product.
- *
- * @param {Object} props Incoming props for the component.
- * @param {string} props.className CSS class name used.
- * @param {string} props.shortDescription Short description for the product.
- * @param {string} props.fullDescription Full description for the product.
- */
-const ProductSummary = ( {
- className,
- shortDescription = '',
- fullDescription = '',
-}: ProductSummaryProps ): JSX.Element | null => {
- const source = shortDescription ? shortDescription : fullDescription;
-
- if ( ! source ) {
- return null;
- }
-
- return (
-
- );
-};
-
-export default ProductSummary;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx
deleted file mode 100644
index fd450c9a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/index.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { CART_URL } from '@woocommerce/block-settings';
-import { Icon, arrowLeft } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface ReturnToCartButtonProps {
- link?: string | undefined;
-}
-
-const ReturnToCartButton = ( {
- link,
-}: ReturnToCartButtonProps ): JSX.Element | null => {
- const cartLink = link || CART_URL;
- if ( ! cartLink ) {
- return null;
- }
- return (
-
-
- { __( 'Return to Cart', 'woo-gutenberg-products-block' ) }
-
- );
-};
-
-export default ReturnToCartButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/style.scss
deleted file mode 100644
index 7b357b9d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/return-to-cart-button/style.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-.wc-block-components-checkout-return-to-cart-button {
- box-shadow: none;
- color: inherit;
- padding-left: calc(24px + 0.25em);
- position: relative;
- text-decoration: none;
-
- svg {
- left: 0;
- position: absolute;
- transform: translateY(-50%);
- top: 50%;
- fill: currentColor;
- }
-}
-
-.rtl {
- .wc-block-components-checkout-return-to-cart-button {
- svg {
- transform: translateY(-50%) scale(-1);
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/address.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/address.tsx
deleted file mode 100644
index ea07bc3b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/address.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import Button from '@woocommerce/base-components/button';
-import { useState } from '@wordpress/element';
-import isShallowEqual from '@wordpress/is-shallow-equal';
-import type { ShippingAddress, AddressFields } from '@woocommerce/settings';
-import { VALIDATION_STORE_KEY, CART_STORE_KEY } from '@woocommerce/block-data';
-import { useDispatch, useSelect } from '@wordpress/data';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import { AddressForm } from '../address-form';
-
-interface ShippingCalculatorAddressProps {
- address: ShippingAddress;
- onUpdate: ( address: ShippingAddress ) => void;
- onCancel: () => void;
- addressFields: Partial< keyof AddressFields >[];
-}
-const ShippingCalculatorAddress = ( {
- address: initialAddress,
- onUpdate,
- onCancel,
- addressFields,
-}: ShippingCalculatorAddressProps ): JSX.Element => {
- const [ address, setAddress ] = useState( initialAddress );
- const { showAllValidationErrors } = useDispatch( VALIDATION_STORE_KEY );
-
- const { hasValidationErrors, isCustomerDataUpdating } = useSelect(
- ( select ) => {
- return {
- hasValidationErrors:
- select( VALIDATION_STORE_KEY ).hasValidationErrors,
- isCustomerDataUpdating:
- select( CART_STORE_KEY ).isCustomerDataUpdating(),
- };
- }
- );
-
- const validateSubmit = () => {
- showAllValidationErrors();
- return ! hasValidationErrors();
- };
-
- return (
-
- );
-};
-
-export default ShippingCalculatorAddress;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/index.tsx
deleted file mode 100644
index b1a346e6..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/index.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * External dependencies
- */
-import type { ShippingAddress } from '@woocommerce/settings';
-import { useCustomerData } from '@woocommerce/base-context/hooks';
-import { dispatch } from '@wordpress/data';
-import { CART_STORE_KEY, processErrorResponse } from '@woocommerce/block-data';
-import { StoreNoticesContainer } from '@woocommerce/blocks-components';
-import { removeNoticesWithContext } from '@woocommerce/base-utils';
-
-/**
- * Internal dependencies
- */
-import ShippingCalculatorAddress from './address';
-import './style.scss';
-
-interface ShippingCalculatorProps {
- onUpdate?: ( newAddress: ShippingAddress ) => void;
- onCancel?: () => void;
- addressFields?: Partial< keyof ShippingAddress >[];
-}
-
-const ShippingCalculator = ( {
- onUpdate = () => {
- /* Do nothing */
- },
- onCancel = () => {
- /* Do nothing */
- },
- addressFields = [ 'country', 'state', 'city', 'postcode' ],
-}: ShippingCalculatorProps ): JSX.Element => {
- const { shippingAddress } = useCustomerData();
- const noticeContext = 'wc/cart/shipping-calculator';
- return (
-
-
- {
- // Updates the address and waits for the result.
- dispatch( CART_STORE_KEY )
- .updateCustomerData(
- {
- shipping_address: newAddress,
- },
- false
- )
- .then( () => {
- removeNoticesWithContext( noticeContext );
- onUpdate( newAddress );
- } )
- .catch( ( response ) => {
- processErrorResponse( response, noticeContext );
- } );
- } }
- />
-
- );
-};
-
-export default ShippingCalculator;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/style.scss
deleted file mode 100644
index ee400db4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-calculator/style.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.wc-block-components-shipping-calculator-address {
- margin-bottom: 0;
-}
-
-.wc-block-components-shipping-calculator-address__button {
- width: 100%;
- margin-top: em($gap-large);
-}
-
-.wc-block-components-shipping-calculator {
- padding: em($gap-smaller) 0 em($gap-small);
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-location/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-location/index.tsx
deleted file mode 100644
index 4f0c4f0b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-location/index.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-
-interface ShippingLocationProps {
- formattedLocation: string | null;
-}
-
-// Shows a formatted shipping location.
-const ShippingLocation = ( {
- formattedLocation,
-}: ShippingLocationProps ): JSX.Element | null => {
- if ( ! formattedLocation ) {
- return null;
- }
-
- return (
-
- { sprintf(
- /* translators: %s location. */
- __( 'Shipping to %s', 'woo-gutenberg-products-block' ),
- formattedLocation
- ) + ' ' }
-
- );
-};
-
-export default ShippingLocation;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/index.tsx
deleted file mode 100644
index bcd00395..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/index.tsx
+++ /dev/null
@@ -1,147 +0,0 @@
-/**
- * External dependencies
- */
-import classNames from 'classnames';
-import { _n, sprintf } from '@wordpress/i18n';
-import { decodeEntities } from '@wordpress/html-entities';
-import { Label, Panel } from '@woocommerce/blocks-components';
-import { useCallback } from '@wordpress/element';
-import { useShippingData } from '@woocommerce/base-context/hooks';
-import { sanitizeHTML } from '@woocommerce/utils';
-import type { ReactElement } from 'react';
-
-/**
- * Internal dependencies
- */
-import PackageRates from './package-rates';
-import type { PackageProps } from './types';
-import './style.scss';
-
-export const ShippingRatesControlPackage = ( {
- packageId,
- className = '',
- noResultsMessage,
- renderOption,
- packageData,
- collapsible,
- showItems,
-}: PackageProps ): ReactElement => {
- const { selectShippingRate, isSelectingRate } = useShippingData();
- const multiplePackages =
- document.querySelectorAll(
- '.wc-block-components-shipping-rates-control__package'
- ).length > 1;
-
- // If showItems is not set, we check if we have multiple packages.
- // We sometimes don't want to show items even if we have multiple packages.
- const shouldShowItems = showItems ?? multiplePackages;
-
- // If collapsible is not set, we check if we have multiple packages.
- // We sometimes don't want to collapse even if we have multiple packages.
- const shouldBeCollapsible = collapsible ?? multiplePackages;
-
- const header = (
- <>
- { ( shouldBeCollapsible || shouldShowItems ) && (
-
- ) }
- { shouldShowItems && (
-
- { Object.values( packageData.items ).map( ( v ) => {
- const name = decodeEntities( v.name );
- const quantity = v.quantity;
- return (
-
- 1
- ? `${ name } × ${ quantity }`
- : `${ name }`
- }
- screenReaderLabel={ sprintf(
- /* translators: %1$s name of the product (ie: Sunglasses), %2$d number of units in the current cart package */
- _n(
- '%1$s (%2$d unit)',
- '%1$s (%2$d units)',
- quantity,
- 'woo-gutenberg-products-block'
- ),
- name,
- quantity
- ) }
- />
-
- );
- } ) }
-
- ) }
- >
- );
-
- const onSelectRate = useCallback(
- ( newShippingRateId: string ) => {
- selectShippingRate( newShippingRateId, packageId );
- },
- [ packageId, selectShippingRate ]
- );
- const packageRatesProps = {
- className,
- noResultsMessage,
- rates: packageData.shipping_rates,
- onSelectRate,
- selectedRate: packageData.shipping_rates.find(
- ( rate ) => rate.selected
- ),
- renderOption,
- disabled: isSelectingRate,
- };
-
- if ( shouldBeCollapsible ) {
- return (
-
-
-
- );
- }
-
- return (
-
- );
-};
-
-export default ShippingRatesControlPackage;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/package-rates.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/package-rates.tsx
deleted file mode 100644
index 31778fba..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/package-rates.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * External dependencies
- */
-import { useState, useEffect } from '@wordpress/element';
-import {
- RadioControl,
- RadioControlOptionLayout,
-} from '@woocommerce/blocks-components';
-import type { CartShippingPackageShippingRate } from '@woocommerce/types';
-import { usePrevious } from '@woocommerce/base-hooks';
-
-/**
- * Internal dependencies
- */
-import { renderPackageRateOption } from './render-package-rate-option';
-import type { PackageRateRenderOption } from '../shipping-rates-control-package';
-
-interface PackageRates {
- onSelectRate: ( selectedRateId: string ) => void;
- rates: CartShippingPackageShippingRate[];
- renderOption?: PackageRateRenderOption | undefined;
- className?: string;
- noResultsMessage: JSX.Element;
- selectedRate: CartShippingPackageShippingRate | undefined;
- disabled?: boolean;
-}
-
-const PackageRates = ( {
- className = '',
- noResultsMessage,
- onSelectRate,
- rates,
- renderOption = renderPackageRateOption,
- selectedRate,
- disabled = false,
-}: PackageRates ): JSX.Element => {
- const selectedRateId = selectedRate?.rate_id || '';
- const previousSelectedRateId = usePrevious( selectedRateId );
-
- // Store selected rate ID in local state so shipping rates changes are shown in the UI instantly.
- const [ selectedOption, setSelectedOption ] = useState( () => {
- if ( selectedRateId ) {
- return selectedRateId;
- }
- // Default to first rate if no rate is selected.
- return rates[ 0 ]?.rate_id;
- } );
-
- // Update the selected option if cart state changes in the data store.
- useEffect( () => {
- if (
- selectedRateId &&
- selectedRateId !== previousSelectedRateId &&
- selectedRateId !== selectedOption
- ) {
- setSelectedOption( selectedRateId );
- }
- }, [ selectedRateId, selectedOption, previousSelectedRateId ] );
-
- // Update the data store when the local selected rate changes.
- useEffect( () => {
- if ( selectedOption ) {
- onSelectRate( selectedOption );
- }
- }, [ onSelectRate, selectedOption ] );
-
- if ( rates.length === 0 ) {
- return noResultsMessage;
- }
-
- if ( rates.length > 1 ) {
- return (
- {
- setSelectedOption( value );
- onSelectRate( value );
- } }
- disabled={ disabled }
- selected={ selectedOption }
- options={ rates.map( renderOption ) }
- />
- );
- }
-
- const { label, secondaryLabel, description, secondaryDescription } =
- renderOption( rates[ 0 ] );
-
- return (
-
- );
-};
-
-export default PackageRates;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/render-package-rate-option.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/render-package-rate-option.tsx
deleted file mode 100644
index 2e59a054..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/render-package-rate-option.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * External dependencies
- */
-import { decodeEntities } from '@wordpress/html-entities';
-import { getCurrencyFromPriceResponse } from '@woocommerce/price-format';
-import { FormattedMonetaryAmount } from '@woocommerce/blocks-components';
-import type { PackageRateOption } from '@woocommerce/types';
-import { getSetting } from '@woocommerce/settings';
-import { CartShippingPackageShippingRate } from '@woocommerce/types';
-
-/**
- * Default render function for package rate options.
- *
- * @param {Object} rate Rate data.
- */
-export const renderPackageRateOption = (
- rate: CartShippingPackageShippingRate
-): PackageRateOption => {
- const priceWithTaxes: number = getSetting(
- 'displayCartPricesIncludingTax',
- false
- )
- ? parseInt( rate.price, 10 ) + parseInt( rate.taxes, 10 )
- : parseInt( rate.price, 10 );
-
- return {
- label: decodeEntities( rate.name ),
- value: rate.rate_id,
- description: (
- <>
- { Number.isFinite( priceWithTaxes ) && (
-
- ) }
- { Number.isFinite( priceWithTaxes ) && rate.delivery_time
- ? ' — '
- : null }
- { decodeEntities( rate.delivery_time ) }
- >
- ),
- };
-};
-
-export default renderPackageRateOption;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/style.scss
deleted file mode 100644
index a6955405..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/style.scss
+++ /dev/null
@@ -1,68 +0,0 @@
-.wc-block-components-shipping-rates-control__package {
- margin: 0;
- @include with-translucent-border( 0 0 1px );
-
- &.wc-block-components-panel {
- margin-bottom: 0;
- }
-
- .wc-block-components-panel__button {
- margin-bottom: 0;
- margin-top: 0;
- padding-bottom: em($gap-small);
- padding-top: em($gap-small);
- }
-
- &:last-child {
- @include with-translucent-border( 0 );
-
- .wc-block-components-panel__button {
- padding-bottom: 0;
- }
- }
-
- .wc-block-components-panel__content {
- padding-bottom: em($gap-small);
- }
-
- .wc-block-components-radio-control,
- .wc-block-components-radio-control__option-layout {
- padding-bottom: 0;
- }
-
- .wc-block-components-radio-control .wc-block-components-radio-control__option-layout {
- padding-bottom: 0;
- }
-
- .wc-block-components-radio-control__label-group {
- @include font-size(small);
- }
- .wc-block-components-radio-control__description-group {
- @include font-size(smaller);
- }
-
- &--disabled {
- opacity: 0.5;
- transition: opacity 200ms ease;
- }
-}
-
-.wc-block-components-shipping-rates-control__package-items {
- @include font-size(small);
- display: block;
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-.wc-block-components-shipping-rates-control__package-item {
- @include wrap-break-word();
- display: inline-block;
- margin: 0;
- padding: 0;
-}
-
-.wc-block-components-shipping-rates-control__package-item:not(:last-child)::after {
- content: ", ";
- white-space: pre;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/types.ts
deleted file mode 100644
index f64b0dbb..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control-package/types.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import type { ReactElement } from 'react';
-import type { PackageRateOption } from '@woocommerce/type-defs/shipping';
-import type { CartShippingPackageShippingRate } from '@woocommerce/type-defs/cart';
-
-export interface PackageItem {
- name: string;
- key: string;
- quantity: number;
-}
-
-export interface Destination {
- address_1: string;
- address_2: string;
- city: string;
- state: string;
- postcode: string;
- country: string;
-}
-
-export interface PackageData {
- destination: Destination;
- name: string;
- shipping_rates: CartShippingPackageShippingRate[];
- items: PackageItem[];
-}
-
-export type PackageRateRenderOption = (
- option: CartShippingPackageShippingRate
-) => PackageRateOption;
-
-// A flag can be ternary if true, false, and undefined are all valid options.
-// In our case, we use this for collapsible and showItems, having a boolean will force that
-// option, having undefined will let the component decide the logic based on other factors.
-export type TernaryFlag = boolean | undefined;
-
-export interface PackageProps {
- /* PackageId can be a string, WooCommerce Subscriptions uses strings for example, but WooCommerce core uses numbers */
- packageId: string | number;
- renderOption?: PackageRateRenderOption | undefined;
- collapse?: boolean;
- packageData: PackageData;
- className?: string;
- collapsible?: TernaryFlag;
- noResultsMessage: ReactElement;
- showItems?: TernaryFlag;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx
deleted file mode 100644
index 3565bfce..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/index.tsx
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useEffect } from '@wordpress/element';
-import LoadingMask from '@woocommerce/base-components/loading-mask';
-import { ExperimentalOrderShippingPackages } from '@woocommerce/blocks-checkout';
-import {
- getShippingRatesPackageCount,
- getShippingRatesRateCount,
-} from '@woocommerce/base-utils';
-import {
- useStoreCart,
- useEditorContext,
- useShippingData,
-} from '@woocommerce/base-context';
-import NoticeBanner from '@woocommerce/base-components/notice-banner';
-import { isObject } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import ShippingRatesControlPackage from '../shipping-rates-control-package';
-import { speakFoundShippingOptions } from './utils';
-import type { PackagesProps, ShippingRatesControlProps } from './types';
-
-/**
- * Renders multiple packages within the slotfill.
- */
-const Packages = ( {
- packages,
- showItems,
- collapsible,
- noResultsMessage,
- renderOption,
-}: PackagesProps ): JSX.Element | null => {
- // If there are no packages, return nothing.
- if ( ! packages.length ) {
- return null;
- }
- return (
- <>
- { packages.map( ( { package_id: packageId, ...packageData } ) => (
-
- ) ) }
- >
- );
-};
-
-/**
- * Renders the shipping rates control element.
- */
-const ShippingRatesControl = ( {
- shippingRates,
- isLoadingRates,
- className,
- collapsible,
- showItems,
- noResultsMessage,
- renderOption,
- context,
-}: ShippingRatesControlProps ): JSX.Element => {
- useEffect( () => {
- if ( isLoadingRates ) {
- return;
- }
- speakFoundShippingOptions(
- getShippingRatesPackageCount( shippingRates ),
- getShippingRatesRateCount( shippingRates )
- );
- }, [ isLoadingRates, shippingRates ] );
-
- // Prepare props to pass to the ExperimentalOrderShippingPackages slot fill.
- // We need to pluck out receiveCart.
- // eslint-disable-next-line no-unused-vars
- const { extensions, receiveCart, ...cart } = useStoreCart();
- const slotFillProps = {
- className,
- collapsible,
- showItems,
- noResultsMessage,
- renderOption,
- extensions,
- cart,
- components: {
- ShippingRatesControlPackage,
- },
- context,
- };
- const { isEditor } = useEditorContext();
- const { hasSelectedLocalPickup, selectedRates } = useShippingData();
-
- // Check if all rates selected are the same.
- const selectedRateIds = isObject( selectedRates )
- ? ( Object.values( selectedRates ) as string[] )
- : [];
- const allPackagesHaveSameRate = selectedRateIds.every( ( rate: string ) => {
- return rate === selectedRateIds[ 0 ];
- } );
-
- return (
-
- { hasSelectedLocalPickup &&
- context === 'woocommerce/cart' &&
- shippingRates.length > 1 &&
- ! allPackagesHaveSameRate &&
- ! isEditor && (
-
- { __(
- 'Multiple shipments must have the same pickup location',
- 'woo-gutenberg-products-block'
- ) }
-
- ) }
-
-
-
-
-
- );
-};
-
-export default ShippingRatesControl;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/types.ts
deleted file mode 100644
index d3474a65..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/types.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * External dependencies
- */
-import { CartResponseShippingRate } from '@woocommerce/type-defs/cart-response';
-import type { ReactElement } from 'react';
-
-/**
- * Internal dependencies
- */
-import {
- PackageRateRenderOption,
- TernaryFlag,
-} from '../shipping-rates-control-package';
-
-export interface PackagesProps {
- // Array of packages
- packages: CartResponseShippingRate[];
-
- // If the package should be rendered as a collapsible panel
- collapsible?: TernaryFlag;
-
- // If we should items below the package name
- showItems?: TernaryFlag;
-
- // Rendered when there are no rates in a package
- noResultsMessage: ReactElement;
-
- // Function to render a shipping rate
- renderOption: PackageRateRenderOption;
-}
-
-export interface ShippingRatesControlProps {
- // If true, when multiple packages are rendered, you can see each package's items
- showItems?: TernaryFlag;
-
- // If true, when multiple packages are rendered they can be toggled open and closed
- collapsible?: TernaryFlag;
-
- // Array of packages containing shipping rates
- shippingRates: CartResponseShippingRate[];
-
- // Class name for package rates
- className?: string | undefined;
-
- // True when rates are being loaded
- isLoadingRates: boolean;
-
- // Rendered when there are no packages
- noResultsMessage: ReactElement;
-
- // Function to render a shipping rate
- renderOption?: PackageRateRenderOption | undefined;
-
- // String equal to the block name where the Slot is rendered
- context: 'woocommerce/cart' | 'woocommerce/checkout';
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/utils.ts
deleted file mode 100644
index bfb21b58..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/shipping-rates-control/utils.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import { _n, sprintf } from '@wordpress/i18n';
-import { speak } from '@wordpress/a11y';
-
-export const speakFoundShippingOptions = (
- packageCount: number,
- rateCount: number
-) => {
- if ( packageCount === 1 ) {
- speak(
- sprintf(
- /* translators: %d number of shipping options found. */
- _n(
- '%d shipping option was found.',
- '%d shipping options were found.',
- rateCount,
- 'woo-gutenberg-products-block'
- ),
- rateCount
- )
- );
- } else {
- speak(
- sprintf(
- /* translators: %d number of shipping packages packages. */
- _n(
- 'Shipping option searched for %d package.',
- 'Shipping options searched for %d packages.',
- packageCount,
- 'woo-gutenberg-products-block'
- ),
- packageCount
- ) +
- ' ' +
- sprintf(
- /* translators: %d number of shipping options available. */
- _n(
- '%d shipping option was found',
- '%d shipping options were found',
- rateCount,
- 'woo-gutenberg-products-block'
- ),
- rateCount
- )
- );
- }
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/index.tsx
deleted file mode 100644
index 930f9dfd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/index.tsx
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useState } from '@wordpress/element';
-import Button from '@woocommerce/base-components/button';
-import LoadingMask from '@woocommerce/base-components/loading-mask';
-import { withInstanceId } from '@wordpress/compose';
-import {
- ValidatedTextInput,
- ValidationInputError,
-} from '@woocommerce/blocks-components';
-import { useSelect } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-import classnames from 'classnames';
-import type { MouseEvent, MouseEventHandler } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface TotalsCouponProps {
- /**
- * Instance id of the input
- */
- instanceId: string;
- /**
- * Whether the component is in a loading state
- */
- isLoading?: boolean;
- /**
- * Whether the coupon form is hidden
- */
- displayCouponForm?: boolean;
- /**
- * Submit handler
- */
- onSubmit?: ( couponValue: string ) => Promise< boolean > | undefined;
-}
-
-export const TotalsCoupon = ( {
- instanceId,
- isLoading = false,
- onSubmit,
- displayCouponForm = false,
-}: TotalsCouponProps ): JSX.Element => {
- const [ couponValue, setCouponValue ] = useState( '' );
- const [ isCouponFormHidden, setIsCouponFormHidden ] = useState(
- ! displayCouponForm
- );
- const textInputId = `wc-block-components-totals-coupon__input-${ instanceId }`;
- const formWrapperClass = classnames(
- 'wc-block-components-totals-coupon__content',
- {
- 'screen-reader-text': isCouponFormHidden,
- }
- );
- const { validationErrorId } = useSelect( ( select ) => {
- const store = select( VALIDATION_STORE_KEY );
- return {
- validationErrorId: store.getValidationErrorId( textInputId ),
- };
- } );
- const handleCouponAnchorClick: MouseEventHandler< HTMLAnchorElement > = (
- e: MouseEvent< HTMLAnchorElement >
- ) => {
- e.preventDefault();
- setIsCouponFormHidden( false );
- };
- const handleCouponSubmit: MouseEventHandler< HTMLButtonElement > = (
- e: MouseEvent< HTMLButtonElement >
- ) => {
- e.preventDefault();
- if ( typeof onSubmit !== 'undefined' ) {
- onSubmit( couponValue )?.then( ( result ) => {
- if ( result ) {
- setCouponValue( '' );
- setIsCouponFormHidden( true );
- }
- } );
- } else {
- setCouponValue( '' );
- setIsCouponFormHidden( true );
- }
- };
-
- return (
-
- );
-};
-
-export default withInstanceId( TotalsCoupon );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/stories/index.stories.tsx
deleted file mode 100644
index 4806602c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/stories/index.stories.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * External dependencies
- */
-import { useArgs } from '@storybook/client-api';
-import type { Story, Meta } from '@storybook/react';
-import { INTERACTION_TIMEOUT } from '@woocommerce/storybook-controls';
-import { useDispatch } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { TotalsCoupon, TotalsCouponProps } from '..';
-
-export default {
- title: 'Base Components/Totals/Coupon',
- component: TotalsCoupon,
- args: {
- initialOpen: true,
- },
-} as Meta< TotalsCouponProps >;
-
-const INVALID_COUPON_ERROR = {
- hidden: false,
- message: 'Invalid coupon code',
-};
-
-const Template: Story< TotalsCouponProps > = ( args ) => {
- const [ {}, setArgs ] = useArgs();
-
- const onSubmit = ( code: string ) => {
- args.onSubmit?.( code );
- setArgs( { isLoading: true } );
- return new Promise( ( resolve ) => {
- setTimeout( () => {
- setArgs( { isLoading: false } );
- resolve( true );
- }, INTERACTION_TIMEOUT );
- } );
- };
-
- return ;
-};
-
-export const Default = Template.bind( {} );
-Default.args = {};
-
-export const LoadingState = Template.bind( {} );
-LoadingState.args = {
- isLoading: true,
-};
-
-export const ErrorState: Story< TotalsCouponProps > = ( args ) => {
- const { setValidationErrors } = useDispatch( VALIDATION_STORE_KEY );
-
- setValidationErrors( { coupon: INVALID_COUPON_ERROR } );
-
- return ;
-};
-
-ErrorState.decorators = [
- ( StoryComponent ) => {
- return ;
- },
-];
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/style.scss
deleted file mode 100644
index 23b24b19..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/style.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-.wc-block-components-totals-coupon {
-
- .wc-block-components-panel__button {
- margin-top: 0;
- padding-top: 0;
- }
-
- .wc-block-components-panel__content {
- padding-bottom: 0;
- }
-}
-
-.wc-block-components-totals-coupon__form {
- display: flex;
- width: 100%;
- margin-bottom: 0;
-
- .wc-block-components-totals-coupon__input {
- margin-bottom: 0;
- margin-top: 0;
- flex-grow: 1;
- }
-
- .wc-block-components-totals-coupon__button {
- height: em(48px);
- flex-shrink: 0;
- margin-left: $gap-smaller;
- padding-left: $gap-large;
- padding-right: $gap-large;
- white-space: nowrap;
- }
-
- .wc-block-components-totals-coupon__button.no-margin {
- margin: 0;
- }
-}
-
-.wc-block-components-totals-coupon__content {
- flex-direction: column;
- position: relative;
-}
-
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/test/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/test/index.tsx
deleted file mode 100644
index 65ed1bb6..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/coupon/test/index.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * External dependencies
- */
-import { act, render, screen } from '@testing-library/react';
-import userEvent from '@testing-library/user-event';
-import { dispatch } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { TotalsCoupon } from '..';
-
-describe( 'TotalsCoupon', () => {
- it( "Shows a validation error when one is in the wc/store/validation data store and doesn't show one when there isn't", () => {
- const { rerender } = render( );
- const openCouponFormButton = screen.getByText( 'Add a coupon' );
- expect( openCouponFormButton ).toBeInTheDocument();
- userEvent.click( openCouponFormButton );
- expect(
- screen.queryByText( 'Invalid coupon code' )
- ).not.toBeInTheDocument();
-
- const { setValidationErrors } = dispatch( VALIDATION_STORE_KEY );
- act( () => {
- setValidationErrors( {
- coupon: {
- hidden: false,
- message: 'Invalid coupon code',
- },
- } );
- } );
- rerender( );
- expect( screen.getByText( 'Invalid coupon code' ) ).toBeInTheDocument();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/index.tsx
deleted file mode 100644
index 6eb34924..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/index.tsx
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import LoadingMask from '@woocommerce/base-components/loading-mask';
-import { RemovableChip, TotalsItem } from '@woocommerce/blocks-components';
-import { applyCheckoutFilter } from '@woocommerce/blocks-checkout';
-import { getSetting } from '@woocommerce/settings';
-import {
- CartResponseCouponItemWithLabel,
- CartTotalsItem,
- Currency,
- LooselyMustHave,
-} from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface TotalsDiscountProps {
- cartCoupons: LooselyMustHave<
- CartResponseCouponItemWithLabel,
- 'code' | 'label' | 'totals'
- >[];
- currency: Currency;
- isRemovingCoupon: boolean;
- removeCoupon: ( couponCode: string ) => void;
- values: LooselyMustHave<
- CartTotalsItem,
- 'total_discount' | 'total_discount_tax'
- >;
-}
-
-const filteredCartCouponsFilterArg = {
- context: 'summary',
-};
-
-const TotalsDiscount = ( {
- cartCoupons = [],
- currency,
- isRemovingCoupon,
- removeCoupon,
- values,
-}: TotalsDiscountProps ): JSX.Element | null => {
- const {
- total_discount: totalDiscount,
- total_discount_tax: totalDiscountTax,
- } = values;
- const discountValue = parseInt( totalDiscount, 10 );
-
- if ( ! discountValue && cartCoupons.length === 0 ) {
- return null;
- }
-
- const discountTaxValue = parseInt( totalDiscountTax, 10 );
- const discountTotalValue = getSetting(
- 'displayCartPricesIncludingTax',
- false
- )
- ? discountValue + discountTaxValue
- : discountValue;
-
- const filteredCartCoupons = applyCheckoutFilter( {
- arg: filteredCartCouponsFilterArg,
- filterName: 'coupons',
- defaultValue: cartCoupons,
- } );
-
- return (
-
-
- { filteredCartCoupons.map( ( cartCoupon ) => {
- return (
- {
- removeCoupon( cartCoupon.code );
- } }
- radius="large"
- ariaLabel={ sprintf(
- /* translators: %s is a coupon code. */
- __(
- 'Remove coupon "%s"',
- 'woo-gutenberg-products-block'
- ),
- cartCoupon.label
- ) }
- />
- );
- } ) }
-
-
- )
- }
- label={
- !! discountTotalValue
- ? __( 'Discount', 'woo-gutenberg-products-block' )
- : __( 'Coupons', 'woo-gutenberg-products-block' )
- }
- value={ discountTotalValue ? discountTotalValue * -1 : '-' }
- />
- );
-};
-
-export default TotalsDiscount;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/stories/index.stories.tsx
deleted file mode 100644
index 7b274b27..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/stories/index.stories.tsx
+++ /dev/null
@@ -1,111 +0,0 @@
-/**
- * External dependencies
- */
-import { useArgs } from '@storybook/client-api';
-import type { Story, Meta } from '@storybook/react';
-import {
- currenciesAPIShape as currencies,
- currencyControl,
- INTERACTION_TIMEOUT,
-} from '@woocommerce/storybook-controls';
-import {
- CartResponseCouponItemWithLabel,
- CartTotalsItem,
- LooselyMustHave,
-} from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import Discount, { TotalsDiscountProps } from '..';
-
-const EXAMPLE_COUPONS: CartResponseCouponItemWithLabel[] = [
- {
- code: 'AWSMSB',
- discount_type: '',
- label: 'Awesome Storybook coupon',
- totals: {
- ...currencies.EUR,
- total_discount: '5000',
- total_discount_tax: '250',
- },
- },
- {
- code: 'STONKS',
- discount_type: '',
- label: 'Most valuable coupon',
- totals: {
- ...currencies.EUR,
- total_discount: '10000',
- total_discount_tax: '1000',
- },
- },
-];
-
-function extractValuesFromCoupons(
- coupons: LooselyMustHave< CartResponseCouponItemWithLabel, 'totals' >[]
-) {
- return coupons.reduce(
- ( acc, curr ) => {
- const totalDiscount =
- Number( acc.total_discount ) +
- Number( curr.totals.total_discount );
- const totalDiscountTax =
- Number( acc.total_discount_tax ) +
- Number( curr.totals.total_discount_tax );
-
- return {
- total_discount: String( totalDiscount ),
- total_discount_tax: String( totalDiscountTax ),
- };
- },
- { total_discount: '0', total_discount_tax: '0' } as LooselyMustHave<
- CartTotalsItem,
- 'total_discount' | 'total_discount_tax'
- >
- );
-}
-
-export default {
- title: 'Base Components/Totals/Discount',
- component: Discount,
- argTypes: {
- currency: currencyControl,
- removeCoupon: { action: 'Removing coupon with code' },
- },
- args: {
- cartCoupons: EXAMPLE_COUPONS,
- isRemovingCoupon: false,
- values: extractValuesFromCoupons( EXAMPLE_COUPONS ),
- },
-} as Meta< TotalsDiscountProps >;
-
-const Template: Story< TotalsDiscountProps > = ( args ) => {
- const [ {}, setArgs ] = useArgs();
-
- const removeCoupon = ( code: string ) => {
- args.removeCoupon( code );
- setArgs( { isRemovingCoupon: true } );
-
- const cartCoupons = args.cartCoupons.filter(
- ( coupon ) => coupon.code !== code
- );
-
- const values = extractValuesFromCoupons( cartCoupons );
-
- setTimeout(
- () => setArgs( { cartCoupons, values, isRemovingCoupon: false } ),
- INTERACTION_TIMEOUT
- );
- };
-
- return ;
-};
-
-export const Default = Template.bind( {} );
-Default.args = {};
-
-export const RemovingCoupon = Template.bind( {} );
-RemovingCoupon.args = {
- isRemovingCoupon: true,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/style.scss
deleted file mode 100644
index 201c2ca4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/discount/style.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-.wc-block-components-totals-discount__coupon-list {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-.wc-block-components-totals-discount .wc-block-components-totals-item__value {
- color: $discount-color;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/index.tsx
deleted file mode 100644
index c977f7f5..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/index.tsx
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import classNames from 'classnames';
-import { createInterpolateElement } from '@wordpress/element';
-import {
- FormattedMonetaryAmount,
- TotalsItem,
-} from '@woocommerce/blocks-components';
-import { applyCheckoutFilter } from '@woocommerce/blocks-checkout';
-import { useStoreCart } from '@woocommerce/base-context/hooks';
-import { getSetting } from '@woocommerce/settings';
-import {
- CartResponseTotals,
- Currency,
- LooselyMustHave,
-} from '@woocommerce/types';
-import { formatPrice } from '@woocommerce/price-format';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface TotalsFooterItemProps {
- /**
- * The currency object with which to display the item
- */
- currency: Currency;
- /**
- * An object containing the total price and the total tax
- *
- * It accepts the entire `CartResponseTotals` to be passed, for
- * convenience, but will use only these two properties.
- */
- values: LooselyMustHave< CartResponseTotals, 'total_price' | 'total_tax' >;
- className?: string;
-}
-
-/**
- * The total at the bottom of the cart
- *
- * Can show how much of the total is in taxes if the settings
- * `taxesEnabled` and `displayCartPricesIncludingTax` are both
- * enabled.
- */
-const TotalsFooterItem = ( {
- currency,
- values,
- className,
-}: TotalsFooterItemProps ): JSX.Element => {
- const SHOW_TAXES =
- getSetting< boolean >( 'taxesEnabled', true ) &&
- getSetting< boolean >( 'displayCartPricesIncludingTax', false );
-
- const {
- total_price: totalPrice,
- total_tax: totalTax,
- tax_lines: taxLines,
- } = values;
-
- // Prepare props to pass to the applyCheckoutFilter filter.
- // We need to pluck out receiveCart.
- // eslint-disable-next-line no-unused-vars
- const { receiveCart, ...cart } = useStoreCart();
- const label = applyCheckoutFilter( {
- filterName: 'totalLabel',
- defaultValue: __( 'Total', 'woo-gutenberg-products-block' ),
- extensions: cart.extensions,
- arg: { cart },
- } );
-
- const parsedTaxValue = parseInt( totalTax, 10 );
- const description =
- taxLines && taxLines.length > 0
- ? sprintf(
- /* translators: %s is a list of tax rates */
- __( 'Including %s', 'woo-gutenberg-products-block' ),
- taxLines
- .map( ( { name, price } ) => {
- return `${ formatPrice(
- price,
- currency
- ) } ${ name }`;
- } )
- .join( ', ' )
- )
- : __(
- 'Including in taxes',
- 'woo-gutenberg-products-block'
- );
-
- return (
-
- { createInterpolateElement( description, {
- TaxAmount: (
-
- ),
- } ) }
-
- )
- }
- />
- );
-};
-
-export default TotalsFooterItem;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/stories/index.stories.tsx
deleted file mode 100644
index 6442babe..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/stories/index.stories.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-import { allSettings } from '@woocommerce/settings';
-import { Currency } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import FooterItem, { TotalsFooterItemProps } from '..';
-
-const NZD: Currency = {
- code: 'NZD',
- symbol: '$',
- thousandSeparator: ' ',
- decimalSeparator: '.',
- minorUnit: 2,
- prefix: '$',
- suffix: '',
-};
-
-export default {
- title: 'Base Components/Totals/FooterItem',
- component: FooterItem,
- args: {
- currency: NZD,
- values: { total_price: '2500', total_tax: '550' },
- },
-} as Meta< TotalsFooterItemProps >;
-
-const Template: Story< TotalsFooterItemProps > = ( args ) => (
-
-);
-
-export const Default = Template.bind( {} );
-Default.decorators = [
- ( StoryComponent ) => {
- allSettings.displayCartPricesIncludingTax = false;
-
- return ;
- },
-];
-
-export const NoTaxLabel = Template.bind( {} );
-NoTaxLabel.decorators = [
- ( StoryComponent ) => {
- allSettings.displayCartPricesIncludingTax = true;
-
- return ;
- },
-];
-
-export const SingleTaxLabel = Template.bind( {} );
-SingleTaxLabel.args = {
- values: {
- total_price: '2500',
- total_tax: '550',
- tax_lines: [ { name: '10% VAT', price: '550', rate: '10.00' } ],
- },
-};
-SingleTaxLabel.decorators = [
- ( StoryComponent ) => {
- allSettings.displayCartPricesIncludingTax = true;
-
- return ;
- },
-];
-
-export const MultipleTaxLabels = Template.bind( {} );
-MultipleTaxLabels.args = {
- values: {
- total_price: '2500',
- total_tax: '550',
- tax_lines: [
- { name: '10% VAT', price: '300', rate: '10.00' },
- { name: '5% VAT', price: '250', rate: '5.00' },
- ],
- },
-};
-MultipleTaxLabels.decorators = [
- ( StoryComponent ) => {
- allSettings.displayCartPricesIncludingTax = true;
-
- return ;
- },
-];
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/style.scss
deleted file mode 100644
index a614ebc9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/style.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-.wc-block-components-totals-footer-item {
- .wc-block-components-totals-item__value,
- .wc-block-components-totals-item__label {
- @include font-size(large);
- }
-
- .wc-block-components-totals-item__label {
- font-weight: 700;
- }
-
- .wc-block-components-totals-footer-item-tax {
- margin-bottom: 0;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/__snapshots__/index.tsx.snap b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/__snapshots__/index.tsx.snap
deleted file mode 100644
index 182f3e09..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/__snapshots__/index.tsx.snap
+++ /dev/null
@@ -1,135 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`TotalsFooterItem Does not show the "including %s of tax" line if tax is 0 1`] = `
-
-
-
-`;
-
-exports[`TotalsFooterItem Does not show the "including %s of tax" line if tax is disabled 1`] = `
-
-
-
-`;
-
-exports[`TotalsFooterItem Shows the "including %s TAX LABEL" line with single tax label 1`] = `
-
-
-
-`;
-
-exports[`TotalsFooterItem Shows the "including %s TAX LABELS" line with multiple tax labels 1`] = `
-
-
-
-`;
-
-exports[`TotalsFooterItem Shows the "including %s of tax" line if tax is greater than 0 1`] = `
-
-
-
-`;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/index.tsx
deleted file mode 100644
index 4158142e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/footer-item/test/index.tsx
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * External dependencies
- */
-import { render } from '@testing-library/react';
-import { allSettings } from '@woocommerce/settings';
-import { Currency, CartResponseTotals } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import TotalsFooterItem from '../index';
-
-describe( 'TotalsFooterItem', () => {
- beforeEach( () => {
- allSettings.taxesEnabled = true;
- allSettings.displayCartPricesIncludingTax = true;
- } );
- const currency: Currency = {
- code: 'GBP',
- decimalSeparator: '.',
- minorUnit: 2,
- prefix: '£',
- suffix: '',
- symbol: '£',
- thousandSeparator: ',',
- };
-
- const values: CartResponseTotals = {
- currency_code: 'GBP',
- currency_decimal_separator: '.',
- currency_minor_unit: 2,
- currency_prefix: '£',
- currency_suffix: '',
- currency_symbol: '£',
- currency_thousand_separator: ',',
- tax_lines: [],
- total_discount: '0',
- total_discount_tax: '0',
- total_fees: '0',
- total_fees_tax: '0',
- total_items: '7100',
- total_items_tax: '0',
- total_price: '8500',
- total_shipping: '0',
- total_shipping_tax: '0',
- total_tax: '0',
- };
-
- it( 'Does not show the "including %s of tax" line if tax is 0', () => {
- const { container } = render(
-
- );
- expect( container ).toMatchSnapshot();
- } );
-
- it( 'Does not show the "including %s of tax" line if tax is disabled', () => {
- allSettings.taxesEnabled = false;
- /* This shouldn't ever happen if taxes are disabled, but this is to test whether the taxesEnabled setting works */
- const valuesWithTax = {
- ...values,
- total_tax: '100',
- total_items_tax: '100',
- };
- const { container } = render(
-
- );
- expect( container ).toMatchSnapshot();
- } );
-
- it( 'Shows the "including %s of tax" line if tax is greater than 0', () => {
- const valuesWithTax = {
- ...values,
- total_tax: '100',
- total_items_tax: '100',
- };
- const { container } = render(
-
- );
- expect( container ).toMatchSnapshot();
- } );
-
- it( 'Shows the "including %s TAX LABEL" line with single tax label', () => {
- const valuesWithTax = {
- ...values,
- total_tax: '100',
- total_items_tax: '100',
- tax_lines: [ { name: '10% VAT', price: '100', rate: '10.000' } ],
- };
- const { container } = render(
-
- );
- expect( container ).toMatchSnapshot();
- } );
-
- it( 'Shows the "including %s TAX LABELS" line with multiple tax labels', () => {
- const valuesWithTax = {
- ...values,
- total_tax: '100',
- total_items_tax: '100',
- tax_lines: [
- { name: '10% VAT', price: '50', rate: '10.000' },
- { name: '5% VAT', price: '50', rate: '5.000' },
- ],
- };
- const { container } = render(
-
- );
- expect( container ).toMatchSnapshot();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/index.ts
deleted file mode 100644
index 4b5406df..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export { default as TotalsCoupon } from './coupon';
-export { default as TotalsDiscount } from './discount';
-export { default as TotalsFooterItem } from './footer-item';
-export { default as TotalsShipping } from './shipping';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/calculator-button.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/calculator-button.tsx
deleted file mode 100644
index 887f34db..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/calculator-button.tsx
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-
-export interface CalculatorButtonProps {
- label?: string;
- isShippingCalculatorOpen: boolean;
- setIsShippingCalculatorOpen: ( isShippingCalculatorOpen: boolean ) => void;
-}
-
-export const CalculatorButton = ( {
- label = __( 'Calculate', 'woo-gutenberg-products-block' ),
- isShippingCalculatorOpen,
- setIsShippingCalculatorOpen,
-}: CalculatorButtonProps ): JSX.Element => {
- return (
- {
- e.preventDefault();
- setIsShippingCalculatorOpen( ! isShippingCalculatorOpen );
- } }
- aria-label={ label }
- aria-expanded={ isShippingCalculatorOpen }
- >
- { label }
-
- );
-};
-
-export default CalculatorButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/index.tsx
deleted file mode 100644
index 82dbbe10..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/index.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { __ } from '@wordpress/i18n';
-import { useState } from '@wordpress/element';
-import { useStoreCart } from '@woocommerce/base-context/hooks';
-import { TotalsItem } from '@woocommerce/blocks-components';
-import type { Currency } from '@woocommerce/types';
-import { ShippingVia } from '@woocommerce/base-components/cart-checkout/totals/shipping/shipping-via';
-import {
- isAddressComplete,
- isPackageRateCollectable,
-} from '@woocommerce/base-utils';
-import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-import { useSelect } from '@wordpress/data';
-
-/**
- * Internal dependencies
- */
-import ShippingCalculator from '../../shipping-calculator';
-import {
- hasShippingRate,
- getTotalShippingValue,
- areShippingMethodsMissing,
-} from './utils';
-import ShippingPlaceholder from './shipping-placeholder';
-import ShippingAddress from './shipping-address';
-import ShippingRateSelector from './shipping-rate-selector';
-import './style.scss';
-
-export interface TotalShippingProps {
- currency: Currency;
- values: {
- total_shipping: string;
- total_shipping_tax: string;
- }; // Values in use
- showCalculator?: boolean; //Whether to display the rate selector below the shipping total.
- showRateSelector?: boolean; // Whether to show shipping calculator or not.
- className?: string;
- isCheckout?: boolean;
-}
-export const TotalsShipping = ( {
- currency,
- values,
- showCalculator = true,
- showRateSelector = true,
- isCheckout = false,
- className,
-}: TotalShippingProps ): JSX.Element => {
- const [ isShippingCalculatorOpen, setIsShippingCalculatorOpen ] =
- useState( false );
- const {
- shippingAddress,
- cartHasCalculatedShipping,
- shippingRates,
- isLoadingRates,
- } = useStoreCart();
- const totalShippingValue = getTotalShippingValue( values );
- const hasRates = hasShippingRate( shippingRates ) || totalShippingValue > 0;
- const showShippingCalculatorForm =
- showCalculator && isShippingCalculatorOpen;
- const prefersCollection = useSelect( ( select ) => {
- return select( CHECKOUT_STORE_KEY ).prefersCollection();
- } );
- const selectedShippingRates = shippingRates.flatMap(
- ( shippingPackage ) => {
- return shippingPackage.shipping_rates
- .filter(
- ( rate ) =>
- // If the shopper prefers collection, the rate is collectable AND selected.
- ( prefersCollection &&
- isPackageRateCollectable( rate ) &&
- rate.selected ) ||
- // Or the shopper does not prefer collection and the rate is selected
- ( ! prefersCollection && rate.selected )
- )
- .flatMap( ( rate ) => rate.name );
- }
- );
- const addressComplete = isAddressComplete( shippingAddress );
- const shippingMethodsMissing = areShippingMethodsMissing(
- hasRates,
- prefersCollection,
- shippingRates
- );
-
- return (
-
-
- )
- }
- description={
- ( ! shippingMethodsMissing && cartHasCalculatedShipping ) ||
- // If address is complete, display the shipping address.
- ( addressComplete && ! isCheckout ) ? (
- <>
-
-
- >
- ) : null
- }
- currency={ currency }
- />
- { showShippingCalculatorForm && (
- {
- setIsShippingCalculatorOpen( false );
- } }
- onCancel={ () => {
- setIsShippingCalculatorOpen( false );
- } }
- />
- ) }
- { showRateSelector &&
- cartHasCalculatedShipping &&
- ! showShippingCalculatorForm && (
-
- ) }
-
- );
-};
-
-export default TotalsShipping;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-address.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-address.tsx
deleted file mode 100644
index efba9acd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-address.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { formatShippingAddress } from '@woocommerce/base-utils';
-import { useEditorContext } from '@woocommerce/base-context';
-import { ShippingAddress as ShippingAddressType } from '@woocommerce/settings';
-import PickupLocation from '@woocommerce/base-components/cart-checkout/pickup-location';
-import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-import { useSelect } from '@wordpress/data';
-
-/**
- * Internal dependencies
- */
-import ShippingLocation from '../../shipping-location';
-import { CalculatorButton, CalculatorButtonProps } from './calculator-button';
-
-export interface ShippingAddressProps {
- showCalculator: boolean;
- isShippingCalculatorOpen: boolean;
- setIsShippingCalculatorOpen: CalculatorButtonProps[ 'setIsShippingCalculatorOpen' ];
- shippingAddress: ShippingAddressType;
-}
-
-export const ShippingAddress = ( {
- showCalculator,
- isShippingCalculatorOpen,
- setIsShippingCalculatorOpen,
- shippingAddress,
-}: ShippingAddressProps ): JSX.Element | null => {
- const { isEditor } = useEditorContext();
- const prefersCollection = useSelect( ( select ) =>
- select( CHECKOUT_STORE_KEY ).prefersCollection()
- );
- const hasFormattedAddress = !! formatShippingAddress( shippingAddress );
-
- // If there is no default customer location set in the store, the customer hasn't provided their address,
- // but a default shipping method is available for all locations,
- // then the shipping calculator will be hidden to avoid confusion.
- if ( ! hasFormattedAddress && ! isEditor ) {
- return null;
- }
-
- const formattedLocation = formatShippingAddress( shippingAddress );
- return (
- <>
- { prefersCollection ? (
-
- ) : (
-
- ) }
- { showCalculator && (
-
- ) }
- >
- );
-};
-
-export default ShippingAddress;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-placeholder.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-placeholder.tsx
deleted file mode 100644
index 23c97c31..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-placeholder.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-
-/**
- * Internal dependencies
- */
-import { CalculatorButton, CalculatorButtonProps } from './calculator-button';
-
-export interface ShippingPlaceholderProps {
- showCalculator: boolean;
- isShippingCalculatorOpen: boolean;
- isCheckout?: boolean;
- setIsShippingCalculatorOpen: CalculatorButtonProps[ 'setIsShippingCalculatorOpen' ];
-}
-
-export const ShippingPlaceholder = ( {
- showCalculator,
- isShippingCalculatorOpen,
- setIsShippingCalculatorOpen,
- isCheckout = false,
-}: ShippingPlaceholderProps ): JSX.Element => {
- if ( ! showCalculator ) {
- return (
-
- { isCheckout
- ? __(
- 'No shipping options available',
- 'woo-gutenberg-products-block'
- )
- : __(
- 'Calculated during checkout',
- 'woo-gutenberg-products-block'
- ) }
-
- );
- }
-
- return (
-
- );
-};
-
-export default ShippingPlaceholder;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-rate-selector.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-rate-selector.tsx
deleted file mode 100644
index 099b279c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-rate-selector.tsx
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import type { CartResponseShippingRate } from '@woocommerce/types';
-import NoticeBanner from '@woocommerce/base-components/notice-banner';
-
-/**
- * Internal dependencies
- */
-import ShippingRatesControl from '../../shipping-rates-control';
-
-export interface ShippingRateSelectorProps {
- hasRates: boolean;
- shippingRates: CartResponseShippingRate[];
- isLoadingRates: boolean;
- isAddressComplete: boolean;
-}
-
-export const ShippingRateSelector = ( {
- hasRates,
- shippingRates,
- isLoadingRates,
- isAddressComplete,
-}: ShippingRateSelectorProps ): JSX.Element => {
- const legend = hasRates
- ? __( 'Shipping options', 'woo-gutenberg-products-block' )
- : __( 'Choose a shipping option', 'woo-gutenberg-products-block' );
- return (
-
- { legend }
-
- { isAddressComplete && (
-
- { __(
- 'There are no shipping options available. Please check your shipping address.',
- 'woo-gutenberg-products-block'
- ) }
-
- ) }
- >
- }
- shippingRates={ shippingRates }
- isLoadingRates={ isLoadingRates }
- context="woocommerce/cart"
- />
-
- );
-};
-
-export default ShippingRateSelector;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-via.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-via.tsx
deleted file mode 100644
index a18e90d5..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/shipping-via.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * External dependencies
- */
-import { decodeEntities } from '@wordpress/html-entities';
-
-export const ShippingVia = ( {
- selectedShippingRates,
-}: {
- selectedShippingRates: string[];
-} ): JSX.Element => {
- return (
-
- { decodeEntities(
- selectedShippingRates
- .filter(
- ( item, index ) =>
- selectedShippingRates.indexOf( item ) === index
- )
- .join( ', ' )
- ) }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/style.scss
deleted file mode 100644
index 5e9cf3b2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/style.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-.wc-block-components-totals-shipping {
- // Added extra label for specificity.
- fieldset.wc-block-components-totals-shipping__fieldset {
- background-color: transparent;
- margin: 0;
- padding: 0;
- border: 0;
- }
-
- .wc-block-components-shipping-address {
- margin-top: $gap;
- display: block;
- }
-
- .wc-block-components-totals-shipping__options {
- .wc-block-components-radio-control__label,
- .wc-block-components-radio-control__description,
- .wc-block-components-radio-control__secondary-label,
- .wc-block-components-radio-control__secondary-description {
- flex-basis: 100%;
- text-align: left;
- }
- margin-top: ($gap-small);
- }
-
- .wc-block-components-shipping-rates-control__no-results-notice {
- margin: 0 0 em($gap-small);
- }
-
- .wc-block-components-totals-shipping__change-address__link {
- font-weight: normal;
- }
- .wc-block-components-totals-shipping__change-address-button {
- @include link-button();
-
- &:hover,
- &:focus,
- &:active {
- opacity: 0.8;
- }
- }
-}
-
-// Extra classes for specificity.
-.theme-twentytwentyone.theme-twentytwentyone.theme-twentytwentyone .wc-block-components-totals-shipping__change-address-button {
- @include link-button();
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/index.tsx
deleted file mode 100644
index 686a5403..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/index.tsx
+++ /dev/null
@@ -1,351 +0,0 @@
-/**
- * External dependencies
- */
-import { screen, render } from '@testing-library/react';
-import { SlotFillProvider } from '@woocommerce/blocks-checkout';
-import { previewCart as mockPreviewCart } from '@woocommerce/resource-previews';
-import * as wpData from '@wordpress/data';
-import * as baseContextHooks from '@woocommerce/base-context/hooks';
-
-/**
- * Internal dependencies
- */
-import { TotalsShipping } from '../index';
-
-jest.mock( '@wordpress/data', () => ( {
- __esModule: true,
- ...jest.requireActual( '@wordpress/data' ),
- useSelect: jest.fn(),
-} ) );
-
-// Mock use select so we can override it when wc/store/checkout is accessed, but return the original select function if any other store is accessed.
-wpData.useSelect.mockImplementation(
- jest.fn().mockImplementation( ( passedMapSelect ) => {
- const mockedSelect = jest.fn().mockImplementation( ( storeName ) => {
- if ( storeName === 'wc/store/checkout' ) {
- return {
- prefersCollection() {
- return false;
- },
- };
- }
- return jest.requireActual( '@wordpress/data' ).select( storeName );
- } );
- passedMapSelect( mockedSelect, {
- dispatch: jest.requireActual( '@wordpress/data' ).dispatch,
- } );
- } )
-);
-
-const shippingAddress = {
- first_name: 'John',
- last_name: 'Doe',
- company: 'Company',
- address_1: '409 Main Street',
- address_2: 'Apt 1',
- city: 'London',
- postcode: 'W1T 4JG',
- country: 'GB',
- state: '',
- email: 'john.doe@company',
- phone: '+1234567890',
-};
-
-jest.mock( '@woocommerce/base-context/hooks', () => {
- return {
- __esModule: true,
- ...jest.requireActual( '@woocommerce/base-context/hooks' ),
- useShippingData: jest.fn(),
- useStoreCart: jest.fn(),
- };
-} );
-baseContextHooks.useShippingData.mockReturnValue( {
- needsShipping: true,
- selectShippingRate: jest.fn(),
- shippingRates: [
- {
- package_id: 0,
- name: 'Shipping method',
- destination: {
- address_1: '',
- address_2: '',
- city: '',
- state: '',
- postcode: '',
- country: '',
- },
- items: [
- {
- key: 'fb0c0a746719a7596f296344b80cb2b6',
- name: 'Hoodie - Blue, Yes',
- quantity: 1,
- },
- {
- key: '1f0e3dad99908345f7439f8ffabdffc4',
- name: 'Beanie',
- quantity: 1,
- },
- ],
- shipping_rates: [
- {
- rate_id: 'flat_rate:1',
- name: 'Flat rate',
- description: '',
- delivery_time: '',
- price: '500',
- taxes: '0',
- instance_id: 1,
- method_id: 'flat_rate',
- meta_data: [
- {
- key: 'Items',
- value: 'Hoodie - Blue, Yes × 1, Beanie × 1',
- },
- ],
- selected: false,
- currency_code: 'USD',
- currency_symbol: '$',
- currency_minor_unit: 2,
- currency_decimal_separator: '.',
- currency_thousand_separator: ',',
- currency_prefix: '$',
- currency_suffix: '',
- },
- {
- rate_id: 'local_pickup:2',
- name: 'Local pickup',
- description: '',
- delivery_time: '',
- price: '0',
- taxes: '0',
- instance_id: 2,
- method_id: 'local_pickup',
- meta_data: [
- {
- key: 'Items',
- value: 'Hoodie - Blue, Yes × 1, Beanie × 1',
- },
- ],
- selected: false,
- currency_code: 'USD',
- currency_symbol: '$',
- currency_minor_unit: 2,
- currency_decimal_separator: '.',
- currency_thousand_separator: ',',
- currency_prefix: '$',
- currency_suffix: '',
- },
- {
- rate_id: 'free_shipping:5',
- name: 'Free shipping',
- description: '',
- delivery_time: '',
- price: '0',
- taxes: '0',
- instance_id: 5,
- method_id: 'free_shipping',
- meta_data: [
- {
- key: 'Items',
- value: 'Hoodie - Blue, Yes × 1, Beanie × 1',
- },
- ],
- selected: true,
- currency_code: 'USD',
- currency_symbol: '$',
- currency_minor_unit: 2,
- currency_decimal_separator: '.',
- currency_thousand_separator: ',',
- currency_prefix: '$',
- currency_suffix: '',
- },
- ],
- },
- ],
-} );
-baseContextHooks.useStoreCart.mockReturnValue( {
- cartItems: mockPreviewCart.items,
- cartTotals: [ mockPreviewCart.totals ],
- cartCoupons: mockPreviewCart.coupons,
- cartFees: mockPreviewCart.fees,
- cartNeedsShipping: mockPreviewCart.needs_shipping,
- shippingRates: [],
- shippingAddress,
- billingAddress: mockPreviewCart.billing_address,
- cartHasCalculatedShipping: mockPreviewCart.has_calculated_shipping,
- isLoadingRates: false,
-} );
-
-describe( 'TotalsShipping', () => {
- it( 'should show correct calculator button label if address is complete', () => {
- render(
-
-
-
- );
- expect(
- screen.getByText(
- 'Shipping to W1T 4JG, London, United Kingdom (UK)'
- )
- ).toBeInTheDocument();
- expect( screen.getByText( 'Change address' ) ).toBeInTheDocument();
- } );
- it( 'should show correct calculator button label if address is incomplete', () => {
- baseContextHooks.useStoreCart.mockReturnValue( {
- cartItems: mockPreviewCart.items,
- cartTotals: [ mockPreviewCart.totals ],
- cartCoupons: mockPreviewCart.coupons,
- cartFees: mockPreviewCart.fees,
- cartNeedsShipping: mockPreviewCart.needs_shipping,
- shippingRates: [],
- shippingAddress: {
- ...shippingAddress,
- city: '',
- country: '',
- postcode: '',
- },
- billingAddress: mockPreviewCart.billing_address,
- cartHasCalculatedShipping: mockPreviewCart.has_calculated_shipping,
- isLoadingRates: false,
- } );
- render(
-
-
-
- );
- expect(
- screen.queryByText( 'Change address' )
- ).not.toBeInTheDocument();
- expect(
- screen.getByText( 'Add an address for shipping options' )
- ).toBeInTheDocument();
- } );
- it( 'does not show the calculator button when default rates are available and no address has been entered', () => {
- baseContextHooks.useStoreCart.mockReturnValue( {
- cartItems: mockPreviewCart.items,
- cartTotals: [ mockPreviewCart.totals ],
- cartCoupons: mockPreviewCart.coupons,
- cartFees: mockPreviewCart.fees,
- cartNeedsShipping: mockPreviewCart.needs_shipping,
- shippingRates: mockPreviewCart.shipping_rates,
- shippingAddress: {
- ...shippingAddress,
- city: '',
- country: '',
- postcode: '',
- },
- billingAddress: mockPreviewCart.billing_address,
- cartHasCalculatedShipping: mockPreviewCart.has_calculated_shipping,
- isLoadingRates: false,
- } );
- render(
-
-
-
- );
- expect(
- screen.queryByText( 'Change address' )
- ).not.toBeInTheDocument();
- expect(
- screen.queryByText( 'Add an address for shipping options' )
- ).not.toBeInTheDocument();
- } );
- it( 'does show the calculator button when default rates are available and has formatted address', () => {
- baseContextHooks.useStoreCart.mockReturnValue( {
- cartItems: mockPreviewCart.items,
- cartTotals: [ mockPreviewCart.totals ],
- cartCoupons: mockPreviewCart.coupons,
- cartFees: mockPreviewCart.fees,
- cartNeedsShipping: mockPreviewCart.needs_shipping,
- shippingRates: mockPreviewCart.shipping_rates,
- shippingAddress: {
- ...shippingAddress,
- city: '',
- state: 'California',
- country: 'US',
- postcode: '',
- },
- billingAddress: mockPreviewCart.billing_address,
- cartHasCalculatedShipping: mockPreviewCart.has_calculated_shipping,
- isLoadingRates: false,
- } );
- render(
-
-
-
- );
- expect( screen.queryByText( 'Change address' ) ).toBeInTheDocument();
- expect(
- screen.queryByText( 'Add an address for shipping options' )
- ).not.toBeInTheDocument();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-address.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-address.tsx
deleted file mode 100644
index c3be82cf..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-address.tsx
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * External dependencies
- */
-import { render, screen } from '@testing-library/react';
-import ShippingAddress from '@woocommerce/base-components/cart-checkout/totals/shipping/shipping-address';
-import { CART_STORE_KEY, CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-import { dispatch } from '@wordpress/data';
-import { previewCart } from '@woocommerce/resource-previews';
-
-jest.mock( '@woocommerce/settings', () => {
- const originalModule = jest.requireActual( '@woocommerce/settings' );
-
- return {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore We know @woocommerce/settings is an object.
- ...originalModule,
- getSetting: ( setting: string, ...rest: unknown[] ) => {
- if ( setting === 'localPickupEnabled' ) {
- return true;
- }
- if ( setting === 'collectableMethodIds' ) {
- return [ 'pickup_location' ];
- }
- return originalModule.getSetting( setting, ...rest );
- },
- };
-} );
-describe( 'ShippingAddress', () => {
- const testShippingAddress = {
- first_name: 'John',
- last_name: 'Doe',
- company: 'Automattic',
- address_1: '123 Main St',
- address_2: '',
- city: 'San Francisco',
- state: 'CA',
- postcode: '94107',
- country: 'US',
- phone: '555-555-5555',
- };
-
- it( 'renders ShippingLocation if user does not prefer collection', () => {
- render(
-
- );
- expect( screen.getByText( /Shipping to 94107/ ) ).toBeInTheDocument();
- expect(
- screen.queryByText( /Collection from/ )
- ).not.toBeInTheDocument();
- } );
- it( 'renders PickupLocation if shopper prefers collection', async () => {
- dispatch( CHECKOUT_STORE_KEY ).setPrefersCollection( true );
-
- // Deselect the default selected rate and select pickup_location:1 rate.
- const currentlySelectedIndex =
- previewCart.shipping_rates[ 0 ].shipping_rates.findIndex(
- ( rate ) => rate.selected
- );
- previewCart.shipping_rates[ 0 ].shipping_rates[
- currentlySelectedIndex
- ].selected = false;
- const pickupRateIndex =
- previewCart.shipping_rates[ 0 ].shipping_rates.findIndex(
- ( rate ) => rate.method_id === 'pickup_location'
- );
- previewCart.shipping_rates[ 0 ].shipping_rates[
- pickupRateIndex
- ].selected = true;
-
- dispatch( CART_STORE_KEY ).receiveCart( previewCart );
-
- render(
-
- );
- expect(
- screen.getByText(
- /Collection from 123 Easy Street, New York, 12345/
- )
- ).toBeInTheDocument();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-placeholder.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-placeholder.tsx
deleted file mode 100644
index 469bb35d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/test/shipping-placeholder.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * External dependencies
- */
-import { screen, render } from '@testing-library/react';
-
-/**
- * Internal dependencies
- */
-import ShippingPlaceholder from '../shipping-placeholder';
-
-describe( 'ShippingPlaceholder', () => {
- it( 'should show correct text if showCalculator is false', () => {
- const { rerender } = render(
-
- );
- expect(
- screen.getByText( 'No shipping options available' )
- ).toBeInTheDocument();
- rerender(
-
- );
- expect(
- screen.getByText( 'Calculated during checkout' )
- ).toBeInTheDocument();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/utils.ts
deleted file mode 100644
index 65e7de4f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/cart-checkout/totals/shipping/utils.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * External dependencies
- */
-import { getSetting } from '@woocommerce/settings';
-import type { CartResponseShippingRate } from '@woocommerce/type-defs/cart-response';
-import { hasCollectableRate } from '@woocommerce/base-utils';
-
-/**
- * Searches an array of packages/rates to see if there are actually any rates
- * available.
- *
- * @param {Array} shippingRatePackages An array of packages and rates.
- * @return {boolean} True if a rate exists.
- */
-export const hasShippingRate = (
- shippingRatePackages: CartResponseShippingRate[]
-): boolean => {
- return shippingRatePackages.some(
- ( shippingRatePackage ) => shippingRatePackage.shipping_rates.length
- );
-};
-
-/**
- * Calculates the total shipping value based on store settings.
- */
-export const getTotalShippingValue = ( values: {
- total_shipping: string;
- total_shipping_tax: string;
-} ): number => {
- return getSetting( 'displayCartPricesIncludingTax', false )
- ? parseInt( values.total_shipping, 10 ) +
- parseInt( values.total_shipping_tax, 10 )
- : parseInt( values.total_shipping, 10 );
-};
-
-/**
- * Checks if no shipping methods are available or if all available shipping methods are local pickup
- * only.
- */
-export const areShippingMethodsMissing = (
- hasRates: boolean,
- prefersCollection: boolean | undefined,
- shippingRates: CartResponseShippingRate[]
-) => {
- if ( ! hasRates ) {
- // No shipping methods available
- return true;
- }
-
- // We check for the availability of shipping options if the shopper selected "Shipping"
- if ( ! prefersCollection ) {
- return shippingRates.some(
- ( shippingRatePackage ) =>
- ! shippingRatePackage.shipping_rates.some(
- ( shippingRate ) =>
- ! hasCollectableRate( shippingRate.method_id )
- )
- );
- }
-
- return false;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/index.tsx
deleted file mode 100644
index 4c80937e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/index.tsx
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { __ } from '@wordpress/i18n';
-import { useEffect, useRef } from '@wordpress/element';
-import { withInstanceId } from '@wordpress/compose';
-import { ComboboxControl } from 'wordpress-components';
-import { ValidationInputError } from '@woocommerce/blocks-components';
-import { isObject } from '@woocommerce/types';
-import { useDispatch, useSelect } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface ComboboxControlOption {
- label: string;
- value: string;
-}
-
-export interface ComboboxProps {
- autoComplete?: string;
- className?: string;
- errorId: string | null;
- errorMessage?: string | undefined;
- id: string;
- instanceId?: string;
- label: string;
- onChange: ( filterValue: string ) => void;
- options: ComboboxControlOption[];
- required?: boolean;
- value: string;
-}
-
-/**
- * Wrapper for the WordPress ComboboxControl which supports validation.
- */
-const Combobox = ( {
- id,
- className,
- label,
- onChange,
- options,
- value,
- required = false,
- errorMessage = __(
- 'Please select a value.',
- 'woo-gutenberg-products-block'
- ),
- errorId: incomingErrorId,
- instanceId = '0',
- autoComplete = 'off',
-}: ComboboxProps ): JSX.Element => {
- const controlRef = useRef< HTMLDivElement >( null );
- const controlId = id || 'control-' + instanceId;
- const errorId = incomingErrorId || controlId;
-
- const { setValidationErrors, clearValidationError } =
- useDispatch( VALIDATION_STORE_KEY );
- const error = useSelect( ( select ) => {
- const store = select( VALIDATION_STORE_KEY );
- return store.getValidationError( errorId );
- } );
-
- useEffect( () => {
- if ( ! required || value ) {
- clearValidationError( errorId );
- } else {
- setValidationErrors( {
- [ errorId ]: {
- message: errorMessage,
- hidden: true,
- },
- } );
- }
- return () => {
- clearValidationError( errorId );
- };
- }, [
- clearValidationError,
- value,
- errorId,
- errorMessage,
- required,
- setValidationErrors,
- ] );
-
- // @todo Remove patch for ComboboxControl once https://github.com/WordPress/gutenberg/pull/33928 is released
- // Also see https://github.com/WordPress/gutenberg/pull/34090
- return (
-
- {
- if ( filterValue.length ) {
- // If we have a value and the combobox is not focussed, this could be from browser autofill.
- const activeElement = isObject( controlRef.current )
- ? controlRef.current.ownerDocument.activeElement
- : undefined;
-
- if (
- activeElement &&
- isObject( controlRef.current ) &&
- controlRef.current.contains( activeElement )
- ) {
- return;
- }
-
- // Try to match.
- const normalizedFilterValue =
- filterValue.toLocaleUpperCase();
-
- // Try to find an exact match first using values.
- const foundValue = options.find(
- ( option ) =>
- option.value.toLocaleUpperCase() ===
- normalizedFilterValue
- );
-
- if ( foundValue ) {
- onChange( foundValue.value );
- return;
- }
-
- // Fallback to a label match.
- const foundOption = options.find( ( option ) =>
- option.label
- .toLocaleUpperCase()
- .startsWith( normalizedFilterValue )
- );
-
- if ( foundOption ) {
- onChange( foundOption.value );
- }
- }
- } }
- options={ options }
- value={ value || '' }
- allowReset={ false }
- autoComplete={ autoComplete }
- aria-invalid={ error?.message && ! error?.hidden }
- />
-
-
- );
-};
-
-export default withInstanceId( Combobox );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/style.scss
deleted file mode 100644
index fb2fdb89..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/combobox/style.scss
+++ /dev/null
@@ -1,167 +0,0 @@
-.wc-block-components-form .wc-block-components-combobox,
-.wc-block-components-combobox {
- .wc-block-components-combobox-control {
- @include reset-typography();
- @include reset-box();
-
- .components-base-control__field {
- @include reset-box();
- position: relative;
- }
- .components-combobox-control__suggestions-container {
- @include reset-typography();
- @include reset-box();
- position: relative;
- }
- input.components-combobox-control__input {
- @include reset-typography();
- @include font-size(regular);
- padding: em($gap + $gap-smaller) em($gap-smaller) em($gap-smaller);
- line-height: em($gap);
- box-sizing: border-box;
- outline: inherit;
- border: 1px solid $input-border-gray;
- background: #fff;
- box-shadow: none;
- color: $input-text-active;
- font-family: inherit;
- font-weight: normal;
- letter-spacing: inherit;
- text-align: left;
- text-overflow: ellipsis;
- text-transform: none;
- white-space: nowrap;
- width: 100%;
- opacity: initial;
- border-radius: $universal-border-radius;
-
- &[aria-expanded="true"],
- &:focus {
- background-color: #fff;
- color: $input-text-active;
- outline: 0;
- box-shadow: 0 0 0 1px $input-border-gray;
- }
-
- &[aria-expanded="true"] {
- border-bottom-right-radius: 0;
- border-bottom-left-radius: 0;
- }
-
- .has-dark-controls & {
- background-color: $input-background-dark;
- border-color: $input-border-dark;
- color: $input-text-dark;
-
- &:focus {
- background-color: $input-background-dark;
- color: $input-text-dark;
- box-shadow: 0 0 0 1px $input-border-dark;
- }
- }
- }
- .components-form-token-field__suggestions-list {
- position: absolute;
- z-index: 10;
- background-color: $select-dropdown-light;
- border: 1px solid $input-border-gray;
- border-top: 0;
- margin: 3em 0 0 -1px;
- padding: 0;
- max-height: 300px;
- min-width: 100%;
- overflow: auto;
- color: $input-text-active;
- border-bottom-left-radius: $universal-border-radius;
- border-bottom-right-radius: $universal-border-radius;
-
- .has-dark-controls & {
- background-color: $select-dropdown-dark;
- color: $input-text-dark;
- }
-
- .components-form-token-field__suggestion {
- @include font-size(regular);
- color: $gray-700;
- cursor: default;
- list-style: none;
- margin: 0;
- padding: em($gap-smallest) $gap;
-
- &.is-selected {
- background-color: $gray-300;
- .has-dark-controls & {
- background-color: $select-item-dark;
- }
- }
-
- &:hover,
- &:focus,
- &.is-highlighted,
- &:active {
- background-color: #00669e;
- color: #fff;
-
- }
- }
- }
-
- label.components-base-control__label {
- @include reset-typography();
- @include font-size(regular);
- position: absolute;
- transform: translateY(em($gap));
- line-height: 1.25; // =20px when font-size is 16px.
- left: em($gap-smaller);
- top: 0;
- transform-origin: top left;
- transition: all 200ms ease;
- color: $universal-body-low-emphasis;
- z-index: 1;
- margin: 0;
- overflow: hidden;
- text-overflow: ellipsis;
- max-width: calc(100% - #{2 * $gap});
- white-space: nowrap;
-
- .has-dark-controls & {
- color: $input-placeholder-dark;
- }
- @media screen and (prefers-reduced-motion: reduce) {
- transition: none;
- }
- }
- }
-
- .wc-block-components-combobox-control:has(input:-webkit-autofill) {
- label {
- transform: translateY(em($gap-smaller)) scale(0.875);
- }
- }
-
- &.is-active,
- &:focus-within {
- .wc-block-components-combobox-control label.components-base-control__label {
- transform: translateY(em($gap-smaller)) scale(0.875);
- }
- }
-
- &.has-error {
- .wc-block-components-combobox-control {
- label.components-base-control__label {
- color: $alert-red;
- }
- input.components-combobox-control__input {
- &,
- &:hover,
- &:focus,
- &:active {
- border-color: $alert-red;
- }
- &:focus {
- box-shadow: 0 0 0 1px $alert-red;
- }
- }
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/CountryInputProps.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/CountryInputProps.ts
deleted file mode 100644
index 81ad22c1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/CountryInputProps.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Internal dependencies
- */
-import { ComboboxProps } from '../combobox';
-import { countries } from './stories/countries-filler';
-
-export interface CountryInputProps extends Omit< ComboboxProps, 'options' > {
- /**
- * Classes to assign to the wrapper component of the input
- */
- className?: string;
- /**
- * Whether input elements can by default have their values automatically completed by the browser.
- *
- * This value gets assigned to both the wrapper `Combobox` and the wrapped input element.
- */
- autoComplete?: string;
-}
-
-export interface CountryInputWithCountriesProps extends CountryInputProps {
- /**
- * List of countries to allow in the selection
- *
- * Object shape should be: `{ [Alpha-2 Country Code]: 'Full country name' }`
- */
- countries: Partial< typeof countries >;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/billing-country-input.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/billing-country-input.tsx
deleted file mode 100644
index 82e1efe4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/billing-country-input.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * External dependencies
- */
-import { ALLOWED_COUNTRIES } from '@woocommerce/block-settings';
-
-/**
- * Internal dependencies
- */
-import CountryInput from './country-input';
-import type { CountryInputProps } from './CountryInputProps';
-
-const BillingCountryInput = ( props: CountryInputProps ): JSX.Element => {
- return ;
-};
-
-export default BillingCountryInput;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/country-input.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/country-input.tsx
deleted file mode 100644
index 9ef5e605..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/country-input.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * External dependencies
- */
-import { useMemo } from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import { decodeEntities } from '@wordpress/html-entities';
-import classnames from 'classnames';
-
-/**
- * Internal dependencies
- */
-import Combobox from '../combobox';
-import './style.scss';
-import type { CountryInputWithCountriesProps } from './CountryInputProps';
-
-export const CountryInput = ( {
- className,
- countries,
- id,
- label,
- onChange,
- value = '',
- autoComplete = 'off',
- required = false,
- errorId,
- errorMessage = __(
- 'Please select a country',
- 'woo-gutenberg-products-block'
- ),
-}: CountryInputWithCountriesProps ): JSX.Element => {
- const options = useMemo(
- () =>
- Object.entries( countries ).map(
- ( [ countryCode, countryName ] ) => ( {
- value: countryCode,
- label: decodeEntities( countryName ),
- } )
- ),
- [ countries ]
- );
-
- return (
-
-
-
- );
-};
-
-export default CountryInput;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/index.ts
deleted file mode 100644
index d98e0d51..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/index.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export type {
- CountryInputProps,
- CountryInputWithCountriesProps,
-} from './CountryInputProps';
-export { CountryInput } from './country-input';
-export { default as BillingCountryInput } from './billing-country-input';
-export { default as ShippingCountryInput } from './shipping-country-input';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/shipping-country-input.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/shipping-country-input.tsx
deleted file mode 100644
index 1470fdc5..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/shipping-country-input.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * External dependencies
- */
-import { SHIPPING_COUNTRIES } from '@woocommerce/block-settings';
-
-/**
- * Internal dependencies
- */
-import CountryInput from './country-input';
-import { CountryInputProps } from './CountryInputProps';
-
-const ShippingCountryInput = ( props: CountryInputProps ): JSX.Element => {
- return ;
-};
-
-export default ShippingCountryInput;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/countries-filler.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/countries-filler.ts
deleted file mode 100644
index 2e9ce8cc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/countries-filler.ts
+++ /dev/null
@@ -1,251 +0,0 @@
-export const countries = {
- AX: 'Åland Islands',
- AF: 'Afghanistan',
- AL: 'Albania',
- DZ: 'Algeria',
- AS: 'American Samoa',
- AD: 'Andorra',
- AO: 'Angola',
- AI: 'Anguilla',
- AQ: 'Antarctica',
- AG: 'Antigua and Barbuda',
- AR: 'Argentina',
- AM: 'Armenia',
- AW: 'Aruba',
- AU: 'Australia',
- AT: 'Austria',
- AZ: 'Azerbaijan',
- BS: 'Bahamas',
- BH: 'Bahrain',
- BD: 'Bangladesh',
- BB: 'Barbados',
- BY: 'Belarus',
- PW: 'Belau',
- BE: 'Belgium',
- BZ: 'Belize',
- BJ: 'Benin',
- BM: 'Bermuda',
- BT: 'Bhutan',
- BO: 'Bolivia',
- BQ: 'Bonaire, Saint Eustatius and Saba',
- BA: 'Bosnia and Herzegovina',
- BW: 'Botswana',
- BV: 'Bouvet Island',
- BR: 'Brazil',
- IO: 'British Indian Ocean Territory',
- BN: 'Brunei',
- BG: 'Bulgaria',
- BF: 'Burkina Faso',
- BI: 'Burundi',
- KH: 'Cambodia',
- CM: 'Cameroon',
- CA: 'Canada',
- CV: 'Cape Verde',
- KY: 'Cayman Islands',
- CF: 'Central African Republic',
- TD: 'Chad',
- CL: 'Chile',
- CN: 'China',
- CX: 'Christmas Island',
- CC: 'Cocos (Keeling) Islands',
- CO: 'Colombia',
- KM: 'Comoros',
- CG: 'Congo (Brazzaville)',
- CD: 'Congo (Kinshasa)',
- CK: 'Cook Islands',
- CR: 'Costa Rica',
- HR: 'Croatia',
- CU: 'Cuba',
- CW: 'Curaçao',
- CY: 'Cyprus',
- CZ: 'Czech Republic',
- DK: 'Denmark',
- DJ: 'Djibouti',
- DM: 'Dominica',
- DO: 'Dominican Republic',
- EC: 'Ecuador',
- EG: 'Egypt',
- SV: 'El Salvador',
- GQ: 'Equatorial Guinea',
- ER: 'Eritrea',
- EE: 'Estonia',
- ET: 'Ethiopia',
- FK: 'Falkland Islands',
- FO: 'Faroe Islands',
- FJ: 'Fiji',
- FI: 'Finland',
- FR: 'France',
- GF: 'French Guiana',
- PF: 'French Polynesia',
- TF: 'French Southern Territories',
- GA: 'Gabon',
- GM: 'Gambia',
- GE: 'Georgia',
- DE: 'Germany',
- GH: 'Ghana',
- GI: 'Gibraltar',
- GR: 'Greece',
- GL: 'Greenland',
- GD: 'Grenada',
- GP: 'Guadeloupe',
- GU: 'Guam',
- GT: 'Guatemala',
- GG: 'Guernsey',
- GN: 'Guinea',
- GW: 'Guinea-Bissau',
- GY: 'Guyana',
- HT: 'Haiti',
- HM: 'Heard Island and McDonald Islands',
- HN: 'Honduras',
- HK: 'Hong Kong',
- HU: 'Hungary',
- IS: 'Iceland',
- IN: 'India',
- ID: 'Indonesia',
- IR: 'Iran',
- IQ: 'Iraq',
- IE: 'Ireland',
- IM: 'Isle of Man',
- IL: 'Israel',
- IT: 'Italy',
- CI: 'Ivory Coast',
- JM: 'Jamaica',
- JP: 'Japan',
- JE: 'Jersey',
- JO: 'Jordan',
- KZ: 'Kazakhstan',
- KE: 'Kenya',
- KI: 'Kiribati',
- KW: 'Kuwait',
- KG: 'Kyrgyzstan',
- LA: 'Laos',
- LV: 'Latvia',
- LB: 'Lebanon',
- LS: 'Lesotho',
- LR: 'Liberia',
- LY: 'Libya',
- LI: 'Liechtenstein',
- LT: 'Lithuania',
- LU: 'Luxembourg',
- MO: 'Macao',
- MG: 'Madagascar',
- MW: 'Malawi',
- MY: 'Malaysia',
- MV: 'Maldives',
- ML: 'Mali',
- MT: 'Malta',
- MH: 'Marshall Islands',
- MQ: 'Martinique',
- MR: 'Mauritania',
- MU: 'Mauritius',
- YT: 'Mayotte',
- MX: 'Mexico',
- FM: 'Micronesia',
- MD: 'Moldova',
- MC: 'Monaco',
- MN: 'Mongolia',
- ME: 'Montenegro',
- MS: 'Montserrat',
- MA: 'Morocco',
- MZ: 'Mozambique',
- MM: 'Myanmar',
- NA: 'Namibia',
- NR: 'Nauru',
- NP: 'Nepal',
- NL: 'Netherlands',
- NC: 'New Caledonia',
- NZ: 'New Zealand',
- NI: 'Nicaragua',
- NE: 'Niger',
- NG: 'Nigeria',
- NU: 'Niue',
- NF: 'Norfolk Island',
- KP: 'North Korea',
- MK: 'North Macedonia',
- MP: 'Northern Mariana Islands',
- NO: 'Norway',
- OM: 'Oman',
- PK: 'Pakistan',
- PS: 'Palestinian Territory',
- PA: 'Panama',
- PG: 'Papua New Guinea',
- PY: 'Paraguay',
- PE: 'Peru',
- PH: 'Philippines',
- PN: 'Pitcairn',
- PL: 'Poland',
- PT: 'Portugal',
- PR: 'Puerto Rico',
- QA: 'Qatar',
- RE: 'Reunion',
- RO: 'Romania',
- RU: 'Russia',
- RW: 'Rwanda',
- ST: 'São Tomé and Príncipe',
- BL: 'Saint Barthélemy',
- SH: 'Saint Helena',
- KN: 'Saint Kitts and Nevis',
- LC: 'Saint Lucia',
- SX: 'Saint Martin (Dutch part)',
- MF: 'Saint Martin (French part)',
- PM: 'Saint Pierre and Miquelon',
- VC: 'Saint Vincent and the Grenadines',
- WS: 'Samoa',
- SM: 'San Marino',
- SA: 'Saudi Arabia',
- SN: 'Senegal',
- RS: 'Serbia',
- SC: 'Seychelles',
- SL: 'Sierra Leone',
- SG: 'Singapore',
- SK: 'Slovakia',
- SI: 'Slovenia',
- SB: 'Solomon Islands',
- SO: 'Somalia',
- ZA: 'South Africa',
- GS: 'South Georgia/Sandwich Islands',
- KR: 'South Korea',
- SS: 'South Sudan',
- ES: 'Spain',
- LK: 'Sri Lanka',
- SD: 'Sudan',
- SR: 'Suriname',
- SJ: 'Svalbard and Jan Mayen',
- SZ: 'Swaziland',
- SE: 'Sweden',
- CH: 'Switzerland',
- SY: 'Syria',
- TW: 'Taiwan',
- TJ: 'Tajikistan',
- TZ: 'Tanzania',
- TH: 'Thailand',
- TL: 'Timor-Leste',
- TG: 'Togo',
- TK: 'Tokelau',
- TO: 'Tonga',
- TT: 'Trinidad and Tobago',
- TN: 'Tunisia',
- TR: 'Turkey',
- TM: 'Turkmenistan',
- TC: 'Turks and Caicos Islands',
- TV: 'Tuvalu',
- UG: 'Uganda',
- UA: 'Ukraine',
- AE: 'United Arab Emirates',
- GB: 'United Kingdom (UK)',
- US: 'United States (US)',
- UM: 'United States (US) Minor Outlying Islands',
- UY: 'Uruguay',
- UZ: 'Uzbekistan',
- VU: 'Vanuatu',
- VA: 'Vatican',
- VE: 'Venezuela',
- VN: 'Vietnam',
- VG: 'Virgin Islands (British)',
- VI: 'Virgin Islands (US)',
- WF: 'Wallis and Futuna',
- EH: 'Western Sahara',
- YE: 'Yemen',
- ZM: 'Zambia',
- ZW: 'Zimbabwe',
-} as const;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/index.stories.tsx
deleted file mode 100644
index 5afc34b7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/stories/index.stories.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-import { useDispatch } from '@wordpress/data';
-import { useState, useEffect } from '@wordpress/element';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { CountryInput, CountryInputWithCountriesProps } from '..';
-import { countries } from './countries-filler';
-
-type CountryCode = keyof typeof countries;
-
-export default {
- title: 'Base Components/CountryInput',
- component: CountryInput,
- args: {
- countries,
- autoComplete: 'off',
- id: 'country',
- label: 'Countries: ',
- required: false,
- },
- argTypes: {
- countries: { control: false },
- options: { table: { disable: true } },
- value: { control: false },
- },
- decorators: [ ( StoryComponent ) => ],
-} as Meta< CountryInputWithCountriesProps >;
-
-const Template: Story< CountryInputWithCountriesProps > = ( args ) => {
- const [ selectedCountry, selectCountry ] = useState< CountryCode | '' >(
- ''
- );
- const { clearValidationError, showValidationError } =
- useDispatch( VALIDATION_STORE_KEY );
-
- useEffect( () => {
- showValidationError( 'country' );
- }, [ showValidationError ] );
-
- function updateCountry( country: CountryCode ) {
- clearValidationError( 'country' );
- selectCountry( country );
- }
-
- return (
- updateCountry( value as CountryCode ) }
- value={ selectedCountry }
- />
- );
-};
-
-export const Default = Template.bind( {} );
-
-export const WithError = Template.bind( {} );
-WithError.args = {
- errorId: 'country',
- errorMessage: 'Please select a country',
- required: true,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/style.scss
deleted file mode 100644
index f6bee679..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/country-input/style.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-@import "node_modules/@wordpress/base-styles/breakpoints";
-@import "node_modules/@wordpress/base-styles/mixins";
-@import "node_modules/wordpress-components/src/combobox-control/style";
-
-.wc-block-components-country-input {
- margin-top: $gap;
-
- // Fixes width in the editor.
- .components-flex {
- width: 100%;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/close-button.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/close-button.tsx
deleted file mode 100644
index bbd61a45..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/close-button.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-const DrawerCloseButton = () => {
- // The Drawer component will use a portal to render the close button inside
- // this div.
- return
;
-};
-
-export default DrawerCloseButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/index.tsx
deleted file mode 100644
index 0698597a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/index.tsx
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * Some code of the Drawer component is based on the Modal component from Gutenberg:
- * https://github.com/WordPress/gutenberg/blob/trunk/packages/components/src/modal/index.tsx
- */
-/**
- * External dependencies
- */
-import classNames from 'classnames';
-import { useDebounce } from 'use-debounce';
-import type { ForwardedRef, KeyboardEvent, RefObject } from 'react';
-import { __ } from '@wordpress/i18n';
-import {
- createPortal,
- useEffect,
- useRef,
- forwardRef,
-} from '@wordpress/element';
-import { close } from '@wordpress/icons';
-import {
- useFocusReturn,
- useFocusOnMount,
- useConstrainedTabbing,
- useMergeRefs,
-} from '@wordpress/compose';
-
-/**
- * Internal dependencies
- */
-import Button from '../button';
-import * as ariaHelper from './utils/aria-helper';
-import './style.scss';
-
-interface DrawerProps {
- children: JSX.Element;
- className?: string;
- isOpen: boolean;
- onClose: () => void;
- slideIn?: boolean;
- slideOut?: boolean;
-}
-
-interface CloseButtonPortalProps {
- onClick: () => void;
- contentRef: RefObject< HTMLDivElement >;
-}
-
-const CloseButtonPortal = ( {
- onClick,
- contentRef,
-}: CloseButtonPortalProps ) => {
- const closeButtonWrapper = contentRef?.current?.querySelector(
- '.wc-block-components-drawer__close-wrapper'
- );
-
- return closeButtonWrapper
- ? createPortal(
- ,
- closeButtonWrapper
- )
- : null;
-};
-
-const UnforwardedDrawer = (
- {
- children,
- className,
- isOpen,
- onClose,
- slideIn = true,
- slideOut = true,
- }: DrawerProps,
- forwardedRef: ForwardedRef< HTMLDivElement >
-): JSX.Element | null => {
- const [ debouncedIsOpen ] = useDebounce< boolean >( isOpen, 300 );
- const isClosing = ! isOpen && debouncedIsOpen;
- const bodyOpenClassName = 'drawer-open';
-
- const onRequestClose = () => {
- document.body.classList.remove( bodyOpenClassName );
- ariaHelper.showApp();
- onClose();
- };
-
- const ref = useRef< HTMLDivElement >();
- const focusOnMountRef = useFocusOnMount();
- const constrainedTabbingRef = useConstrainedTabbing();
- const focusReturnRef = useFocusReturn();
- const contentRef = useRef< HTMLDivElement >( null );
-
- useEffect( () => {
- if ( isOpen ) {
- ariaHelper.hideApp( ref.current );
- document.body.classList.add( bodyOpenClassName );
- }
- }, [ isOpen, bodyOpenClassName ] );
-
- const overlayRef = useMergeRefs( [ ref, forwardedRef ] );
- const drawerRef = useMergeRefs( [
- constrainedTabbingRef,
- focusReturnRef,
- focusOnMountRef,
- ] );
-
- if ( ! isOpen && ! isClosing ) {
- return null;
- }
-
- function handleEscapeKeyDown( event: KeyboardEvent< HTMLDivElement > ) {
- if (
- // Ignore keydowns from IMEs
- event.nativeEvent.isComposing ||
- // Workaround for Mac Safari where the final Enter/Backspace of an IME composition
- // is `isComposing=false`, even though it's technically still part of the composition.
- // These can only be detected by keyCode.
- event.keyCode === 229
- ) {
- return;
- }
-
- if ( event.code === 'Escape' && ! event.defaultPrevented ) {
- event.preventDefault();
- onRequestClose();
- }
- }
-
- return createPortal(
- // eslint-disable-next-line jsx-a11y/no-static-element-interactions
- {
- // If click was done directly in the overlay element and not one
- // of its descendants, close the drawer.
- if ( e.target === ref.current ) {
- onRequestClose();
- }
- } }
- >
-
-
,
- document.body
- );
-};
-
-const Drawer = forwardRef( UnforwardedDrawer );
-
-export default Drawer;
-export { default as DrawerCloseButton } from './close-button';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/style.scss
deleted file mode 100644
index 62ac846c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/style.scss
+++ /dev/null
@@ -1,167 +0,0 @@
-:root {
- /* This value might be overridden in PHP based on the attribute set by the user. */
- --drawer-width: 480px;
- --neg-drawer-width: calc(var(--drawer-width) * -1);
-}
-
-$drawer-animation-duration: 0.3s;
-
-@keyframes fadein {
- from {
- opacity: 0;
- }
-
- to {
- opacity: 1;
- }
-}
-
-@keyframes slidein {
- from {
- transform: translateX(0);
- }
-
- to {
- transform: translateX(max(-100%, var(--neg-drawer-width)));
- }
-}
-
-@keyframes rtlslidein {
- from {
- transform: translateX(0);
- }
-
- to {
- transform: translateX(min(100%, var(--drawer-width)));
- }
-}
-
-.wc-block-components-drawer__screen-overlay {
- background-color: rgba(95, 95, 95, 0.35);
- bottom: 0;
- left: 0;
- position: fixed;
- right: 0;
- top: 0;
- transition: opacity $drawer-animation-duration;
- z-index: 9999;
- opacity: 1;
-}
-
-.wc-block-components-drawer__screen-overlay--with-slide-out {
- transition: opacity $drawer-animation-duration;
-}
-
-// We can't use transition for the slide-in animation because the element
-// doesn't exist in the DOM when not open. Instead, use an animation that
-// is triggered when the element is appended to the DOM.
-.wc-block-components-drawer__screen-overlay--with-slide-in {
- animation-duration: $drawer-animation-duration;
- animation-name: fadein;
-}
-
-.wc-block-components-drawer__screen-overlay--is-hidden {
- pointer-events: none;
- opacity: 0;
-}
-
-.wc-block-components-drawer {
- @include with-translucent-border(0 0 0 1px);
- background: #fff;
- display: block;
- height: 100%;
- left: 100%;
- position: fixed;
- right: 0;
- top: 0;
- transform: translateX(max(-100%, var(--neg-drawer-width)));
- width: var(--drawer-width);
- max-width: 100%;
-}
-
-.rtl .wc-block-components-drawer {
- transform: translateX(min(100%, var(--drawer-width)));
-}
-
-.wc-block-components-drawer__screen-overlay--with-slide-out .wc-block-components-drawer {
- transition: transform $drawer-animation-duration;
-}
-
-.wc-block-components-drawer__screen-overlay--with-slide-in .wc-block-components-drawer {
- animation-duration: $drawer-animation-duration;
- animation-name: slidein;
-}
-
-.rtl .wc-block-components-drawer__screen-overlay--with-slide-in .wc-block-components-drawer {
- animation-name: rtlslidein;
-}
-
-.wc-block-components-drawer__screen-overlay--is-hidden .wc-block-components-drawer {
- transform: translateX(0);
-}
-
-@media screen and (prefers-reduced-motion: reduce) {
- .wc-block-components-drawer__screen-overlay {
- animation-name: none !important;
- transition: none !important;
- }
- .wc-block-components-drawer {
- animation-name: none !important;
- transition: none !important;
- }
-}
-
-// Important rules are needed to reset button styles.
-.wc-block-components-drawer__close {
- @include reset-box();
- background: transparent !important;
- color: inherit !important;
- position: absolute !important;
- top: $gap-small;
- right: $gap-small;
- opacity: 0.6;
- z-index: 2;
- // Increase clickable area.
- padding: 1em !important;
- margin: -1em;
-
- &:hover,
- &:focus,
- &:active {
- opacity: 1;
- }
-
- // Don't show focus styles if the close button hasn't been focused by the
- // user directly. This is done to prevent focus styles to appear when
- // opening the drawer with the mouse, as the focus is moved inside
- // programmatically.
- &:focus:not(:focus-visible) {
- box-shadow: none;
- outline: none;
- }
-
- > span {
- @include visually-hidden();
- }
- svg {
- fill: currentColor;
- display: block;
- }
-}
-
-.wc-block-components-drawer__content {
- height: 100dvh;
- position: relative;
-}
-
-.admin-bar .wc-block-components-drawer__content {
- margin-top: 46px;
- height: calc(100dvh - 46px);
-}
-
-@media only screen and (min-width: 783px) {
- .admin-bar .wc-block-components-drawer__content {
- margin-top: 32px;
- height: calc(100dvh - 32px);
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/utils/aria-helper.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/utils/aria-helper.ts
deleted file mode 100644
index dbb91aaa..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/drawer/utils/aria-helper.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-/**
- * Copied from https://github.com/WordPress/gutenberg/blob/trunk/packages/components/src/modal/aria-helper.ts
- */
-const LIVE_REGION_ARIA_ROLES = new Set( [
- 'alert',
- 'status',
- 'log',
- 'marquee',
- 'timer',
-] );
-
-let hiddenElements: Element[] = [],
- isHidden = false;
-
-/**
- * Determines if the passed element should not be hidden from screen readers.
- *
- * @param {HTMLElement} element The element that should be checked.
- *
- * @return {boolean} Whether the element should not be hidden from screen-readers.
- */
-export function elementShouldBeHidden( element: Element ) {
- const role = element.getAttribute( 'role' );
- return ! (
- element.tagName === 'SCRIPT' ||
- element.hasAttribute( 'aria-hidden' ) ||
- element.hasAttribute( 'aria-live' ) ||
- ( role && LIVE_REGION_ARIA_ROLES.has( role ) )
- );
-}
-
-/**
- * Hides all elements in the body element from screen-readers except
- * the provided element and elements that should not be hidden from
- * screen-readers.
- *
- * The reason we do this is because `aria-modal="true"` currently is bugged
- * in Safari, and support is spotty in other browsers overall. In the future
- * we should consider removing these helper functions in favor of
- * `aria-modal="true"`.
- *
- * @param {HTMLDivElement} unhiddenElement The element that should not be hidden.
- */
-export function hideApp( unhiddenElement?: HTMLDivElement ) {
- if ( isHidden ) {
- return;
- }
- const elements = Array.from( document.body.children );
- elements.forEach( ( element ) => {
- if ( element === unhiddenElement ) {
- return;
- }
- if ( elementShouldBeHidden( element ) ) {
- element.setAttribute( 'aria-hidden', 'true' );
- hiddenElements.push( element );
- }
- } );
- isHidden = true;
-}
-
-/**
- * Makes all elements in the body that have been hidden by `hideApp`
- * visible again to screen-readers.
- */
-export function showApp() {
- if ( ! isHidden ) {
- return;
- }
- hiddenElements.forEach( ( element ) => {
- element.removeAttribute( 'aria-hidden' );
- } );
- hiddenElements = [];
- isHidden = false;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/index.tsx
deleted file mode 100644
index 05e07336..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/index.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * External dependencies
- */
-import { _n, sprintf } from '@wordpress/i18n';
-import { Label } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface FilterElementLabelProps {
- name: string;
- count: number | null;
-}
-/**
- * The label for a filter element.
- *
- * @param {Object} props Incoming props for the component.
- * @param {string} props.name The name for the label.
- * @param {number} props.count The count of products this status is attached to.
- */
-const FilterElementLabel = ( {
- name,
- count,
-}: FilterElementLabelProps ): JSX.Element => {
- return (
- <>
- { name }
- { count !== null && Number.isFinite( count ) && (
-
- ) }
- >
- );
-};
-
-export default FilterElementLabel;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/style.scss
deleted file mode 100644
index eb9b9784..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-element-label/style.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.wc-filter-element-label-list-count {
- &::before {
- content: " (";
- }
- &::after {
- content: ")";
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/index.tsx
deleted file mode 100644
index 679e716b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/index.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface FilterTitlePlaceholderProps {
- children?: React.ReactNode;
-}
-
-const FilterTitlePlaceholder = ( {
- children,
-}: FilterTitlePlaceholderProps ): JSX.Element => {
- return (
- { children }
- );
-};
-
-export default FilterTitlePlaceholder;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/style.scss
deleted file mode 100644
index 7c461e79..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-placeholder/style.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-.wc-block-filter-title-placeholder {
- @include placeholder();
- border-radius: em(26px);
- box-shadow: none;
- min-width: 80px;
- margin-top: $gap-small;
- margin-bottom: $gap-small;
- max-width: max-content !important;
-
- .wc-block-stock-filter__title,
- .wc-block-price-filter__title,
- .wc-block-active-filters__title,
- .wc-block-attribute-filter__title,
- .wc-block-rating-filter__title {
- margin: 0;
- height: 1em;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/index.tsx
deleted file mode 100644
index 514af907..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/index.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import classNames from 'classnames';
-import { Label } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface FilterResetButtonProps {
- className?: string;
- label?: string;
- onClick: () => void;
- screenReaderLabel?: string;
-}
-
-const FilterResetButton = ( {
- className,
- /* translators: Reset button text for filters. */
- label = __( 'Reset', 'woo-gutenberg-products-block' ),
- onClick,
- screenReaderLabel = __( 'Reset filter', 'woo-gutenberg-products-block' ),
-}: FilterResetButtonProps ): JSX.Element => {
- return (
-
-
-
- );
-};
-
-export default FilterResetButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/style.scss
deleted file mode 100644
index 63c87769..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-reset-button/style.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-.wc-block-components-filter-reset-button {
- @include filter-link-button();
- @include font-size(small);
- cursor: pointer;
-
- &[disabled] {
- cursor: not-allowed;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/index.tsx
deleted file mode 100644
index c332ad38..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/index.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import classNames from 'classnames';
-import { Label } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface FilterSubmitButtonProps {
- className?: string;
- isLoading?: boolean;
- disabled?: boolean;
- label?: string;
- onClick: () => void;
- screenReaderLabel?: string;
-}
-
-const FilterSubmitButton = ( {
- className,
- isLoading,
- disabled,
- /* translators: Submit button text for filters. */
- label = __( 'Apply', 'woo-gutenberg-products-block' ),
- onClick,
- screenReaderLabel = __( 'Apply filter', 'woo-gutenberg-products-block' ),
-}: FilterSubmitButtonProps ): JSX.Element => {
- return (
-
-
-
- );
-};
-
-export default FilterSubmitButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/style.scss
deleted file mode 100644
index 39c46996..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/filter-submit-button/style.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-.wc-block-components-filter-submit-button {
- border: none;
- display: block;
- margin-left: auto;
- white-space: nowrap;
-
- &.is-loading {
- @include placeholder();
- margin-top: $gap;
- width: max-content;
- box-shadow: none;
- border-radius: 0;
- line-height: initial;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/index.tsx
deleted file mode 100644
index 72e5b38a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/index.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * External dependencies
- */
-import { FormTokenField as WPFormTokenField } from 'wordpress-components';
-import classNames from 'classnames';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface Props {
- className?: string;
- disabled?: boolean;
- displayTransform?: ( value: string ) => string;
- label?: string;
- messages?: Record< string, string >;
- multiple?: boolean;
- onChange: ( value: string[] ) => void;
- placeholder?: string;
- saveTransform?: ( value: string ) => string;
- style?: React.CSSProperties;
- suggestions: string[];
- validateInput?: ( token: string ) => boolean;
- value: string[];
-}
-
-const FormTokenField = ( {
- className,
- style,
- suggestions,
- multiple = true,
- saveTransform = ( incompleteToken ) =>
- incompleteToken.trim().replace( /\s/g, '-' ),
- messages = {},
- validateInput = ( token: string ) => suggestions.includes( token ),
- label = '',
- ...props
-}: Props ) => {
- return (
-
-
-
- );
-};
-
-export default FormTokenField;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/stories/index.stories.tsx
deleted file mode 100644
index 00d66f6b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/stories/index.stories.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-import { useState } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import FormTokenField, { Props } from '..';
-
-export default {
- title: 'Base Components/FormTokenField',
- argTypes: {},
- component: FormTokenField,
-} as Meta< Props >;
-
-const Template: Story< Props > = ( args ) => {
- const [ selected, setSelected ] = useState< string[] >( [] );
-
- return (
- setSelected( tokens ) }
- />
- );
-};
-
-const suggestions = [ 'foo', 'bar', 'baz' ];
-
-export const Default = Template.bind( {} );
-Default.args = {
- suggestions,
-};
-
-export const Disabled = Template.bind( {} );
-Disabled.args = {
- ...Default.args,
- disabled: true,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/style.scss
deleted file mode 100644
index c7cc77fc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/style.scss
+++ /dev/null
@@ -1,94 +0,0 @@
-@import "./vendor";
-
-.wc-blocks-components-form-token-field-wrapper {
- border-color: $gray-600;
-
- .components-visually-hidden,
- .components-form-token-field__label {
- @include visually-hidden();
- }
-
- .components-form-token-field,
- .components-form-token-field__input-container {
- border-color: inherit;
- box-sizing: border-box;
- margin-bottom: 0;
- }
-
- .components-form-token-field__input-container {
- background-color: #fff;
- border-radius: 0;
- box-shadow: none;
- color: #000;
- position: relative;
-
- input[type="text"].components-form-token-field__input {
- min-height: 30px;
- }
- }
-
- .components-form-token-field__remove-token.components-button,
- .components-form-token-field__token-text {
- background: $gray-200;
- }
-
- .components-form-token-field__remove-token {
- border: none;
- }
-
- .components-form-token-field__suggestions-list {
- background-color: $white;
- border: 1px solid $gray-600;
- border-width: 0 1px 1px;
- left: -1px;
- margin: 1px 0 0;
- position: absolute;
- right: -1px;
- top: 100%;
- z-index: 50;
-
- &:empty {
- display: none;
- }
- }
-
- .components-form-token-field__suggestion {
- padding: 8px;
-
- &.is-selected {
- background: $gray-100;
- color: $gray-800;
- }
- }
-
- &.single-selection {
- .components-form-token-field__token {
- margin-right: 0;
- position: relative;
- width: 100%;
- z-index: 1;
- }
-
- .components-form-token-field__remove-token.components-button,
- .components-form-token-field__token-text {
- background: transparent;
- }
-
- .components-form-token-field__token-text {
- padding-left: 4px;
- width: 100%;
- }
-
- .components-form-token-field__token + input[type="text"].components-form-token-field__input {
- position: absolute;
- }
-
- .is-active .components-form-token-field__token + input[type="text"].components-form-token-field__input {
- border: 1px solid $gray-600;
- margin: 0 2px 4px;
- padding: 0 5px;
- position: static;
- }
-
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/vendor.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/vendor.scss
deleted file mode 100644
index 273d47af..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form-token-field/vendor.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// Including style of popover in bin/webpack-entries.js breaks the editor.
-// We need to import and scope the popover style under the
-// wc-blocks-attribute-filter-popover class to prevent conflict.
-// Tooltip must be under the same scope to work properly.
-.wc-blocks-components-form-token-field-wrapper {
- /* stylelint-disable no-invalid-position-at-import-rule */
- @import "node_modules/@wordpress/base-styles/breakpoints";
- @import "node_modules/@wordpress/base-styles/mixins";
- @import "node_modules/wordpress-components/src/popover/style";
- @import "node_modules/wordpress-components/src/tooltip/style";
- @import "node_modules/wordpress-components/src/form-token-field/style";
- /* stylelint-enable no-invalid-position-at-import-rule */
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form/index.tsx
deleted file mode 100644
index 99d2a12e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/form/index.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import type { FormEvent } from 'react';
-
-interface FormProps {
- className: string;
- children?: React.ReactChildren;
- onSubmit: ( event: FormEvent ) => void;
-}
-
-const Form = ( {
- className,
- children,
- onSubmit = ( event ) => void event,
-}: FormProps ): JSX.Element => {
- const formOnSubmit = ( event: FormEvent ) => {
- event.preventDefault();
- onSubmit( event );
- };
-
- return (
-
- );
-};
-
-export default Form;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/index.ts
deleted file mode 100644
index 3275bd60..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/index.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-export * from './block-error-boundary';
-export * from './button';
-export * from './cart-checkout';
-export * from './combobox';
-export * from './country-input';
-export * from './drawer';
-export * from './filter-element-label';
-export * from './filter-placeholder';
-export * from './filter-reset-button';
-export * from './filter-submit-button';
-export * from './form';
-export * from './form-token-field';
-export * from './load-more-button';
-export * from './loading-mask';
-export * from './noninteractive';
-export * from './notice-banner';
-export * from './pagination';
-export * from './price-slider';
-export * from './product-list';
-export * from './product-name';
-export * from './product-price';
-export * from './product-rating';
-export * from './quantity-selector';
-export * from './read-more';
-export * from './reviews';
-export * from './sidebar-layout';
-export * from './snackbar-list';
-export * from './state-input';
-export * from './summary';
-export * from './tabs';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/index.tsx
deleted file mode 100644
index d5d3f7b7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/index.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import type { MouseEventHandler } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import Label from '../../../../../packages/components/label'; // Imported like this because importing from the components package loads the data stores unnecessarily - not a problem in the front end but would require a lot of unit test rewrites to prevent breaking tests due to incorrect mocks.
-
-interface LoadMoreButtonProps {
- onClick: MouseEventHandler;
- label?: string;
- screenReaderLabel?: string;
-}
-
-export const LoadMoreButton = ( {
- onClick,
- label = __( 'Load more', 'woo-gutenberg-products-block' ),
- screenReaderLabel = __( 'Load more', 'woo-gutenberg-products-block' ),
-}: LoadMoreButtonProps ): JSX.Element => {
- return (
-
-
-
-
-
- );
-};
-
-export default LoadMoreButton;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/style.scss
deleted file mode 100644
index 517e8bc8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/load-more-button/style.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.wc-block-components-load-more {
- text-align: center;
- width: 100%;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/index.tsx
deleted file mode 100644
index 61c20940..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/index.tsx
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import classNames from 'classnames';
-import { Spinner } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface LoadingMaskProps {
- children?: React.ReactNode | React.ReactNode[];
- className?: string;
- screenReaderLabel?: string;
- showSpinner?: boolean;
- isLoading?: boolean;
-}
-// @todo Find a way to block buttons/form components when LoadingMask isLoading
-const LoadingMask = ( {
- children,
- className,
- screenReaderLabel,
- showSpinner = false,
- isLoading = true,
-}: LoadingMaskProps ): JSX.Element => {
- return (
-
- { isLoading && showSpinner &&
}
-
- { children }
-
- { isLoading && (
-
- { screenReaderLabel ||
- __( 'Loading…', 'woo-gutenberg-products-block' ) }
-
- ) }
-
- );
-};
-
-export default LoadingMask;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/style.scss
deleted file mode 100644
index 4d07b984..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/loading-mask/style.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-.wc-block-components-loading-mask {
- position: relative;
- min-height: 18px + $gap;
- pointer-events: none;
-
- .components-spinner {
- position: absolute;
- margin: 0;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- }
-
- .wc-block-components-loading-mask__children {
- opacity: 0.25;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/noninteractive/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/noninteractive/index.tsx
deleted file mode 100644
index ec2ac050..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/noninteractive/index.tsx
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * External dependencies
- */
-import { useRef, useLayoutEffect } from '@wordpress/element';
-import { focus } from '@wordpress/dom';
-import { useDebouncedCallback } from 'use-debounce';
-
-/**
- * Names of control nodes which need to be disabled.
- */
-const FOCUSABLE_NODE_NAMES = [
- 'BUTTON',
- 'FIELDSET',
- 'INPUT',
- 'OPTGROUP',
- 'OPTION',
- 'SELECT',
- 'TEXTAREA',
- 'A',
-];
-
-/**
- * Noninteractive component
- *
- * Makes children elements Noninteractive, preventing both mouse and keyboard events without affecting how the elements
- * appear visually. Used for previews.
- *
- * Based on the component in WordPress.
- *
- * @see https://github.com/WordPress/gutenberg/blob/trunk/packages/components/src/disabled/index.js
- */
-const Noninteractive = ( {
- children,
- style = {},
- ...props
-}: {
- children: React.ReactNode;
- style?: Record< string, string >;
-} ): JSX.Element => {
- const node = useRef< HTMLDivElement >( null );
-
- const disableFocus = () => {
- if ( node.current ) {
- focus.focusable.find( node.current ).forEach( ( focusable ) => {
- if ( FOCUSABLE_NODE_NAMES.includes( focusable.nodeName ) ) {
- focusable.setAttribute( 'tabindex', '-1' );
- }
- if ( focusable.hasAttribute( 'contenteditable' ) ) {
- focusable.setAttribute( 'contenteditable', 'false' );
- }
- } );
- }
- };
-
- // Debounce re-disable since disabling process itself will incur additional mutations which should be ignored.
- const debounced = useDebouncedCallback( disableFocus, 0, {
- leading: true,
- } );
-
- useLayoutEffect( () => {
- let observer: MutationObserver | undefined;
- disableFocus();
- if ( node.current ) {
- observer = new window.MutationObserver( debounced );
- observer.observe( node.current, {
- childList: true,
- attributes: true,
- subtree: true,
- } );
- }
- return () => {
- if ( observer ) {
- observer.disconnect();
- }
- debounced.cancel();
- };
- }, [ debounced ] );
-
- return (
-
- { children }
-
- );
-};
-
-export default Noninteractive;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/docs/docs.mdx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/docs/docs.mdx
deleted file mode 100644
index 38080370..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/docs/docs.mdx
+++ /dev/null
@@ -1,112 +0,0 @@
-import { Canvas, Meta, ArgTypes, Primary, Source } from '@storybook/blocks';
-
-import * as NoticeBannerStories from '../stories/index.stories.tsx';
-
-
-
-# NoticeBanner
-
-An informational UI displayed near the top of the store pages.
-
-
-
-## Design Guidelines
-
-`NoticeBanner` is an informational UI element displayed near the top of store pages used to indicate the result of an action, or to draw the user's attention to necessary information.
-
-Notices are color-coded to indicate the type of message being communicated, and also show an icon to reinforce the meaning of the message. The color and icon used for a notice are determined by the `status` prop.
-
-### Default Notices
-
-By default, noices are grey and used for less important messaging.
-
-
-
-### Informational Notices
-
-Blue notices with an info icon are used for general information for buyers, but do not require them to take an action.
-
-
-
-### Error Notices
-
-Red notices with an alert icon are used to show that an error has occurred and that the user needs to take action.
-
-
-
-### Success Notices
-
-Green notices with a success icon are used to show an action was successful.
-
-
-
-### Warning Notices
-
-Yellow notices with an alert icon are used to show that the user may need to take action, or needs to be aware of something important.
-
-
-
-### Error Summary
-
-If you provide a `summary` it will be displayed above the notice content. This can be useful for displaying a summary of errors in a list format.
-
-
-
-## Development Guidelines
-
-### Props
-
-
-
-### Usage examples
-
-#### Example: string based notices
-
-To display a basic notice, pass the notice message as a string:
-
-```jsx
-import { NoticeBanner } from '@woocommerce/base-components';
-
-Your message here ;
-```
-
-#### Example: components within notices
-
-For more complex markup, you can wrap any JSX element:
-
-```jsx
-import { NoticeBanner } from '@woocommerce/base-components';
-
-
-
- An error occurred: { errorDetails }.
-
- ;
-```
-
-#### Example: list of notices
-
-In this example, the summary prop is used to indicate to the user that there are errors in the form submission.
-
-```typescript
-import { NoticeBanner } from '@woocommerce/base-components';
-
-const errorMessages = [
- 'First error message',
- 'Second error message',
- 'Third error message',
-];
-
-
-
- { errorMessages.map( ( message ) => (
- { message }
- ) ) }
-
- ;
-```
-
-The list of error messages is rendered within the NoticeBanner component using an unordered list (``) and list items (``). The `status` prop is set to `error` to indicate that the notice represents an error message.
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/index.tsx
deleted file mode 100644
index 91464d8d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/index.tsx
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { __ } from '@wordpress/i18n';
-import { Icon, close } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import { getDefaultPoliteness, getStatusIcon } from './utils';
-import Button from '../button';
-import { useSpokenMessage } from '../../hooks';
-
-export interface NoticeBannerProps {
- children: React.ReactNode;
- className?: string;
- isDismissible?: boolean;
- onRemove?: () => void;
- politeness?: 'polite' | 'assertive';
- spokenMessage?: string | React.ReactNode;
- status: 'success' | 'error' | 'info' | 'warning' | 'default';
- summary?: string;
-}
-
-/**
- * NoticeBanner component.
- *
- * An informational UI displayed near the top of the store pages.
- */
-const NoticeBanner = ( {
- className,
- status = 'default',
- children,
- spokenMessage = children,
- onRemove = () => void 0,
- isDismissible = true,
- politeness = getDefaultPoliteness( status ),
- summary,
-}: NoticeBannerProps ) => {
- useSpokenMessage( spokenMessage, politeness );
-
- const dismiss = ( event: React.SyntheticEvent ) => {
- if (
- typeof event?.preventDefault === 'function' &&
- event.preventDefault
- ) {
- event.preventDefault();
- }
- onRemove();
- };
-
- return (
-
-
-
- { summary && (
-
- { summary }
-
- ) }
- { children }
-
- { !! isDismissible && (
-
- ) }
-
- );
-};
-
-export default NoticeBanner;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/stories/index.stories.tsx
deleted file mode 100644
index 6e1cf16a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/stories/index.stories.tsx
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * External dependencies
- */
-import type { StoryFn, Meta } from '@storybook/react';
-
-/**
- * Internal dependencies
- */
-import NoticeBanner, { NoticeBannerProps } from '../';
-const availableStatus = [ 'default', 'success', 'error', 'warning', 'info' ];
-
-export default {
- title: 'Base Components/NoticeBanner',
- argTypes: {
- status: {
- control: 'radio',
- options: availableStatus,
- description:
- 'Status determines the color of the notice and the icon.',
- },
- isDismissible: {
- control: 'boolean',
- description:
- 'Determines whether the notice can be dismissed by the user. When set to true, a close icon will be displayed on the banner.',
- },
- summary: {
- description:
- 'Optional summary text shown above notice content, used when several notices are listed together.',
- control: 'text',
- },
- className: {
- description: 'Additional class name to give to the notice.',
- control: 'text',
- },
- spokenMessage: {
- description:
- 'Optionally provided to change the spoken message for assistive technology. If not provided, the `children` prop will be used as the spoken message.',
- control: 'text',
- },
- politeness: {
- control: 'radio',
- options: [ 'polite', 'assertive' ],
- description:
- 'Determines the level of politeness for the notice for assistive technology.',
- },
- children: {
- description:
- 'The displayed message of a notice. Also used as the spoken message for assistive technology, unless `spokenMessage` is provided as an alternative message.',
- disable: true,
- },
- onRemove: {
- description:
- 'Function called when dismissing the notice. When the close icon is clicked or the Escape key is pressed, this function will be called.',
- disable: true,
- },
- },
- component: NoticeBanner,
-} as Meta< NoticeBannerProps >;
-
-const Template: StoryFn< NoticeBannerProps > = ( args ) => {
- return ;
-};
-
-export const Default = Template.bind( {} );
-Default.args = {
- children: 'This is a default notice',
- status: 'default',
- isDismissible: true,
- summary: undefined,
- className: undefined,
- spokenMessage: undefined,
- politeness: undefined,
-};
-
-export const Error = Template.bind( {} );
-Error.args = {
- children: 'This is an error notice',
- status: 'error',
-};
-
-export const Warning = Template.bind( {} );
-Warning.args = {
- children: 'This is a warning notice',
- status: 'warning',
-};
-
-export const Info = Template.bind( {} );
-Info.args = {
- children: 'This is an informational notice',
- status: 'info',
-};
-
-export const Success = Template.bind( {} );
-Success.args = {
- children: 'This is a success notice',
- status: 'success',
-};
-
-export const ErrorSummary = Template.bind( {} );
-ErrorSummary.args = {
- summary: 'Please fix the following errors',
- children: (
-
- This is an error notice
- This is another error notice
-
- ),
- status: 'error',
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/style.scss
deleted file mode 100644
index 45a757f4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/style.scss
+++ /dev/null
@@ -1,151 +0,0 @@
-%notice-banner {
- display: flex;
- align-items: stretch;
- align-content: flex-start;
- color: $gray-800;
- padding: $gap !important;
- gap: $gap-small;
- margin: $gap 0;
- border-radius: $universal-border-radius;
- border-color: $gray-800;
- font-weight: 400;
- line-height: 1.5;
- border: 1px solid;
- @include font-size(small);
- background-color: #fff;
- box-sizing: border-box;
-
- > .wc-block-components-notice-banner__content {
- padding-right: $gap;
- align-self: center;
- white-space: normal;
- flex-basis: 100%;
-
- &:last-child {
- padding-right: 0;
- }
-
- .wc-block-components-notice-banner__summary {
- margin: 0 0 $gap-smaller;
- font-weight: 600;
- }
-
- ul,
- ol {
- margin: 0 0 0 $gap-large;
- padding: 0;
-
- li::after {
- content: "";
- clear: both;
- display: block;
- }
- }
-
- // Legacy notice compatibility.
- .wc-forward {
- float: right;
- color: $gray-800 !important;
- background: transparent;
- padding: 0 !important;
- margin: 0;
- border: 0;
- appearance: none;
- opacity: 0.6;
- text-decoration-line: underline;
- text-underline-position: under;
-
- &:hover,
- &:focus,
- &:active {
- opacity: 1;
- }
- }
- }
-
- > svg {
- fill: #fff;
- border-radius: 50%;
- padding: 2px;
- background-color: $gray-800;
- flex-shrink: 0;
- flex-grow: 0;
- }
-
- > .wc-block-components-button {
- margin: 6px 0 0 auto !important;
- background: transparent none !important;
- box-shadow: none !important;
- outline: none !important;
- border: 0 !important;
- padding: 0 !important;
- height: 16px !important;
- width: 16px !important;
- min-height: auto !important;
- color: $gray-800 !important;
- min-width: 0 !important;
- flex: 0 0 16px;
- opacity: 0.6;
-
- > svg {
- margin: 0 !important;
- }
-
- &:hover,
- &:focus,
- &:active {
- opacity: 1;
- }
- }
-}
-
-%error {
- border-color: $alert-red;
- background-color: #fff0f0;
-
- > svg {
- background-color: $alert-red;
- transform: rotate(180deg);
- }
-}
-%warning {
- border-color: $alert-yellow;
- background-color: #fffbf4;
-
- > svg {
- background-color: $alert-yellow;
- transform: rotate(180deg);
- }
-}
-%success {
- border-color: $alert-green;
- background-color: #f4fff7;
-
- > svg {
- background-color: $alert-green;
- }
-}
-%info {
- border-color: #007cba;
- background-color: #f4f8ff;
-
- > svg {
- background-color: #007cba;
- }
-}
-
-.wc-block-components-notice-banner {
- @extend %notice-banner;
- &.is-error {
- @extend %error;
- }
- &.is-warning {
- @extend %warning;
- }
- &.is-success {
- @extend %success;
- }
- &.is-info {
- @extend %info;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/test/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/test/index.tsx
deleted file mode 100644
index ce9f2722..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/test/index.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * External dependencies
- */
-import { render, fireEvent, findByText } from '@testing-library/react';
-
-/**
- * Internal dependencies
- */
-import NoticeBanner from '../index';
-
-describe( 'NoticeBanner', () => {
- test( 'renders without errors when all required props are provided', async () => {
- const { container } = render(
- This is an error message
- );
- expect(
- await findByText( container, 'This is an error message' )
- ).toBeInTheDocument();
- } );
-
- test( 'displays the notice message correctly', () => {
- const message = 'This is a test message';
- const { getByText } = render(
-
- { message }
-
- );
- const messageElement = getByText( message );
- expect( messageElement ).toBeInTheDocument();
- } );
-
- test( 'displays the correct status for the notice', () => {
- const { container } = render(
-
- This is a warning message
-
- );
- expect( container.querySelector( '.is-warning' ) ).toBeInTheDocument();
- } );
-
- test( 'displays the summary correctly when provided', () => {
- const summaryText = '4 new messages';
- const { getByText } = render(
-
- This is a test message
-
- );
- const summaryElement = getByText( summaryText );
- expect( summaryElement ).toBeInTheDocument();
- } );
-
- test( 'can be dismissed when isDismissible prop is true', () => {
- const onRemoveMock = jest.fn();
- const { getByRole } = render(
-
- This is a success message
-
- );
- const closeButton = getByRole( 'button' );
- fireEvent.click( closeButton );
- expect( onRemoveMock ).toHaveBeenCalled();
- } );
-
- test( 'calls onRemove function when the notice is dismissed', () => {
- const onRemoveMock = jest.fn();
- const { getByRole } = render(
-
- This is an informative message
-
- );
- const closeButton = getByRole( 'button' );
- fireEvent.click( closeButton );
- expect( onRemoveMock ).toHaveBeenCalled();
- } );
-
- test( 'applies the className prop to the notice', () => {
- const customClassName = 'my-custom-class';
- const { container } = render(
-
- This is a success message
-
- );
- const noticeElement = container.firstChild;
- expect( noticeElement ).toHaveClass( customClassName );
- } );
-
- test( 'does not throw any errors when all props are provided correctly', () => {
- const spyError = jest.spyOn( console, 'error' );
- render(
- This is a test message
- );
- expect( spyError ).not.toHaveBeenCalled(); // Should not print any error/warning messages
- spyError.mockRestore(); // Restore the original mock
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/utils.ts
deleted file mode 100644
index eb061664..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/notice-banner/utils.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * External dependencies
- */
-import { info, megaphone, check } from '@wordpress/icons';
-
-/**
- * Get the default politeness level for a given status. This is based on how severe the status is.
- */
-export const getDefaultPoliteness = ( status: string ) => {
- switch ( status ) {
- case 'success':
- case 'warning':
- case 'info':
- case 'default':
- return 'polite';
-
- case 'error':
- default:
- return 'assertive';
- }
-};
-
-/**
- * Gets the icon for the notice from the status. Note; we spin the warning status 180 degrees to make it look like an exclamation mark.
- */
-export const getStatusIcon = ( status: string ): JSX.Element => {
- switch ( status ) {
- case 'success':
- return check;
- case 'warning':
- case 'info':
- case 'error':
- return info;
- default:
- return megaphone;
- }
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/index.tsx
deleted file mode 100644
index c707e216..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/index.tsx
+++ /dev/null
@@ -1,226 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import classNames from 'classnames';
-import { Label } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import { getIndexes } from './utils';
-import './style.scss';
-
-interface PaginationProps {
- /**
- * Number of the page currently being displayed.
- */
- currentPage: number;
- /**
- * Total number of pages.
- */
- totalPages: number;
- /**
- * Displays first and last pages if they are not in the current range of pages displayed.
- */
- displayFirstAndLastPages?: boolean;
- /**
- * Displays arrows to navigate to the previous and next pages.
- */
- displayNextAndPreviousArrows?: boolean;
- /**
- * Callback function called when the user triggers a page change.
- */
- onPageChange: ( currentPage: number ) => void;
- /**
- * Number of pages to display at the same time, including the active page
- * and the pages displayed before and after it. It doesn't include the first
- * and last pages.
- */
- pagesToDisplay?: number;
-}
-
-const Pagination = ( {
- currentPage,
- displayFirstAndLastPages = true,
- displayNextAndPreviousArrows = true,
- pagesToDisplay = 3,
- onPageChange,
- totalPages,
-}: PaginationProps ): JSX.Element => {
- let { minIndex, maxIndex } = getIndexes(
- pagesToDisplay,
- currentPage,
- totalPages
- );
-
- const showFirstPage = displayFirstAndLastPages && Boolean( minIndex !== 1 );
- const showLastPage =
- displayFirstAndLastPages && Boolean( maxIndex !== totalPages );
- const showFirstPageEllipsis =
- displayFirstAndLastPages && Boolean( minIndex && minIndex > 3 );
- const showLastPageEllipsis =
- displayFirstAndLastPages &&
- Boolean( maxIndex && maxIndex < totalPages - 2 );
-
- // Handle the cases where there would be an ellipsis replacing one single page
- if ( showFirstPage && minIndex === 3 ) {
- minIndex = minIndex - 1;
- }
- if ( showLastPage && maxIndex === totalPages - 2 ) {
- maxIndex = maxIndex + 1;
- }
-
- const pages = [];
- if ( minIndex && maxIndex ) {
- for ( let i = minIndex; i <= maxIndex; i++ ) {
- pages.push( i );
- }
- }
-
- return (
-
-
- { displayNextAndPreviousArrows && (
- onPageChange( currentPage - 1 ) }
- title={ __(
- 'Previous page',
- 'woo-gutenberg-products-block'
- ) }
- disabled={ currentPage <= 1 }
- >
-
-
- ) }
- { showFirstPage && (
- onPageChange( 1 ) }
- disabled={ currentPage === 1 }
- >
-
-
- ) }
- { showFirstPageEllipsis && (
-
- { __( '…', 'woo-gutenberg-products-block' ) }
-
- ) }
- { pages.map( ( page ) => {
- return (
- onPageChange( page )
- }
- disabled={ currentPage === page }
- >
-
-
- );
- } ) }
- { showLastPageEllipsis && (
-
- { __( '…', 'woo-gutenberg-products-block' ) }
-
- ) }
- { showLastPage && (
- onPageChange( totalPages ) }
- disabled={ currentPage === totalPages }
- >
-
-
- ) }
- { displayNextAndPreviousArrows && (
- onPageChange( currentPage + 1 ) }
- title={ __( 'Next page', 'woo-gutenberg-products-block' ) }
- disabled={ currentPage >= totalPages }
- >
-
-
- ) }
-
- );
-};
-
-export default Pagination;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/style.scss
deleted file mode 100644
index 16d4f13d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/style.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-.wc-block-components-pagination {
- margin: 0 auto $gap;
-}
-
-.wc-block-components-pagination__page,
-.wc-block-components-pagination__ellipsis {
- @include font-size(regular);
- color: #333;
- display: inline-block;
- font-weight: normal;
-}
-
-.wc-block-components-pagination__page {
- border-color: transparent;
- padding: 0.3em 0.6em;
- min-width: 2.2em;
-
- &:not([disabled]) {
- cursor: pointer;
- }
-
- @include breakpoint("<782px") {
- padding: 0.1em 0.2em;
- min-width: 1.6em;
- }
-
- // Twenty Twenty register a background color for buttons that is too specific
- // and broad at the same time `button:not(.toggle)` so we're engaing in a
- // specify war with them here.
- // https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/1203
- &:not(.toggle) {
- background-color: transparent;
- }
-}
-
-.wc-block-components-pagination__ellipsis {
- padding: 0.3em;
-
- @include breakpoint("<782px") {
- padding: 0.1em;
- }
-}
-
-.wc-block-components-pagination__page--active[disabled] {
- color: #333;
- font-weight: bold;
- opacity: 1 !important;
-
- &:hover,
- &:focus {
- background-color: inherit;
- color: #333;
- opacity: 1 !important;
- }
-}
-
-html[dir="rtl"] .wc-block-components-pagination-page--arrow span {
- display: inline-block;
- transform: scale(-1, 1);
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/test/index.js
deleted file mode 100644
index 6a3881fb..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/test/index.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Internal dependencies
- */
-import { getIndexes } from '../utils';
-
-describe( 'getIndexes', () => {
- describe( 'when on the first page', () => {
- test( 'indexes include the first pages available', () => {
- expect( getIndexes( 5, 1, 100 ) ).toEqual( {
- minIndex: 2,
- maxIndex: 6,
- } );
- } );
-
- test( 'indexes are null if there are 2 pages or less', () => {
- expect( getIndexes( 5, 1, 1 ) ).toEqual( {
- minIndex: null,
- maxIndex: null,
- } );
- } );
- } );
-
- describe( 'when on a page in the middle', () => {
- test( 'indexes include pages before and after the current page', () => {
- expect( getIndexes( 5, 50, 100 ) ).toEqual( {
- minIndex: 48,
- maxIndex: 52,
- } );
- } );
- } );
-
- describe( 'when on the last page', () => {
- test( 'indexes include the last pages available', () => {
- expect( getIndexes( 5, 100, 100 ) ).toEqual( {
- minIndex: 95,
- maxIndex: 99,
- } );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/utils.ts
deleted file mode 100644
index 0b5462ae..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/pagination/utils.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Given the number of pages to display, the current page and the total pages,
- * returns the min and max index of the pages to display in the pagination component.
- *
- * @param {number} pagesToDisplay Maximum number of pages to display in the pagination component.
- * @param {number} currentPage Page currently visible.
- * @param {number} totalPages Total pages available.
- * @return {Object} Object containing the min and max index to display in the pagination component.
- */
-type minMaxIndex = {
- minIndex: number | null;
- maxIndex: number | null;
-};
-export const getIndexes = (
- pagesToDisplay: number,
- currentPage: number,
- totalPages: number
-): minMaxIndex => {
- if ( totalPages <= 2 ) {
- return { minIndex: null, maxIndex: null };
- }
- const extraPagesToDisplay = pagesToDisplay - 1;
- const tentativeMinIndex = Math.max(
- Math.floor( currentPage - extraPagesToDisplay / 2 ),
- 2
- );
- const maxIndex = Math.min(
- Math.ceil(
- currentPage +
- ( extraPagesToDisplay - ( currentPage - tentativeMinIndex ) )
- ),
- totalPages - 1
- );
- const minIndex = Math.max(
- Math.floor(
- currentPage - ( extraPagesToDisplay - ( maxIndex - currentPage ) )
- ),
- 2
- );
-
- return { minIndex, maxIndex };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/constrain-range-slider-values.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/constrain-range-slider-values.ts
deleted file mode 100644
index e237f91f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/constrain-range-slider-values.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * Validate a min and max value for a range slider against defined constraints (min, max, step).
- *
- * @return {[number, number]} Validated and updated min/max values that fit within the range slider constraints.
- */
-export const constrainRangeSliderValues = (
- /**
- * Tuple containing min and max values.
- */
- values: [ number, number ],
- /**
- * Min allowed value for the sliders.
- */
- min?: number | null,
- /**
- * Max allowed value for the sliders.
- */
- max?: number | null,
- /**
- * Step value for the sliders.
- */
- step = 1,
- /**
- * Whether we're currently interacting with the min range slider or not, so we update the correct values.
- */
- isMin = false
-): [ number, number ] => {
- let [ minValue, maxValue ] = values;
-
- const isFinite = ( n: number | undefined ): n is number =>
- Number.isFinite( n );
-
- if ( ! isFinite( minValue ) ) {
- minValue = min || 0;
- }
-
- if ( ! isFinite( maxValue ) ) {
- maxValue = max || step;
- }
-
- if ( isFinite( min ) && min > minValue ) {
- minValue = min;
- }
-
- if ( isFinite( max ) && max <= minValue ) {
- minValue = max - step;
- }
-
- if ( isFinite( min ) && min >= maxValue ) {
- maxValue = min + step;
- }
-
- if ( isFinite( max ) && max < maxValue ) {
- maxValue = max;
- }
-
- if ( ! isMin && minValue >= maxValue ) {
- minValue = maxValue - step;
- }
-
- if ( isMin && maxValue <= minValue ) {
- maxValue = minValue + step;
- }
-
- return [ minValue, maxValue ];
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/index.tsx
deleted file mode 100644
index 712df6e1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/index.tsx
+++ /dev/null
@@ -1,518 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import {
- useState,
- useEffect,
- useCallback,
- useMemo,
- useRef,
- useLayoutEffect,
-} from '@wordpress/element';
-import classnames from 'classnames';
-import { FormattedMonetaryAmount } from '@woocommerce/blocks-components';
-import { Currency, isObject } from '@woocommerce/types';
-import { useDebouncedCallback } from 'use-debounce';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import { constrainRangeSliderValues } from './constrain-range-slider-values';
-import FilterSubmitButton from '../filter-submit-button';
-import { isValidMaxValue, isValidMinValue } from './utils';
-import FilterResetButton from '../filter-reset-button';
-
-export interface PriceSliderProps {
- /**
- * Currency configuration object.
- */
- currency: Currency;
- /**
- * Whether values are loading or not.
- */
- isLoading?: boolean;
- /**
- * Whether values are updating or not. The update starts when the price slider is changed.
- */
- isUpdating?: boolean;
- /**
- * Maximum constraint.
- */
- maxConstraint: number | null | undefined;
- /**
- * Maximum price for slider.
- */
- maxPrice: number | null;
- /**
- * Minimum constraint.
- */
- minConstraint: number | null | undefined;
- /**
- * Minimum price for slider.
- */
- minPrice: number | null;
- /**
- * Function to call on the change event.
- */
- onChange: ( value: [ number, number ] ) => void;
- /**
- * Function to call when submit event fires.
- */
- onSubmit?: () => void;
- /**
- * Whether to show the filter button for the slider.
- */
- showFilterButton?: boolean;
- /**
- * Whether to show input fields for the values or not.
- */
- showInputFields?: boolean;
- /**
- * Whether to show input fields inline with the slider or not.
- */
- inlineInput?: boolean;
- /**
- * What step values the slider uses.
- */
- step?: number;
- /**
- * Wheter we're in the editor or not.
- */
- isEditor?: boolean;
-}
-
-const PriceSlider = ( {
- minPrice,
- maxPrice,
- minConstraint,
- maxConstraint,
- onChange,
- step,
- currency,
- showInputFields = true,
- showFilterButton = false,
- inlineInput = true,
- isLoading = false,
- isUpdating = false,
- isEditor = false,
- onSubmit = () => void 0,
-}: PriceSliderProps ): JSX.Element => {
- const minRange = useRef< HTMLInputElement >( null );
- const maxRange = useRef< HTMLInputElement >( null );
-
- // We want step to default to 1 major unit, e.g. $1.
- const stepValue = step ? step : 10 ** currency.minorUnit;
-
- const [ minPriceInput, setMinPriceInput ] = useState( minPrice );
- const [ maxPriceInput, setMaxPriceInput ] = useState( maxPrice );
-
- const wrapper = useRef< HTMLInputElement >( null );
- const [ wrapperWidth, setWrapperWidth ] = useState( 0 );
-
- useEffect( () => {
- setMinPriceInput( minPrice );
- }, [ minPrice ] );
-
- useEffect( () => {
- setMaxPriceInput( maxPrice );
- }, [ maxPrice ] );
-
- useLayoutEffect( () => {
- if ( inlineInput && wrapper.current ) {
- setWrapperWidth( wrapper.current?.offsetWidth );
- }
- }, [ inlineInput, setWrapperWidth ] );
-
- /**
- * Checks if the min and max constraints are valid.
- */
- const hasValidConstraints = useMemo( () => {
- return isFinite( minConstraint ) && isFinite( maxConstraint );
- }, [ minConstraint, maxConstraint ] );
-
- /**
- * Handles styles for the shaded area of the range slider.
- */
- const progressStyles = useMemo( () => {
- if (
- ! isFinite( minPrice ) ||
- ! isFinite( maxPrice ) ||
- ! hasValidConstraints
- ) {
- return {
- '--low': '0%',
- '--high': '100%',
- };
- }
-
- const low =
- 100 *
- ( ( minPrice - minConstraint ) /
- ( maxConstraint - minConstraint ) );
-
- const high =
- 100 *
- ( ( maxPrice - minConstraint ) /
- ( maxConstraint - minConstraint ) );
-
- return {
- '--low': low + '%',
- '--high': high + '%',
- };
- }, [
- minPrice,
- maxPrice,
- minConstraint,
- maxConstraint,
- hasValidConstraints,
- ] );
-
- /**
- * Works around an IE issue where only one range selector is visible by changing the display order
- * based on the mouse position.
- *
- * @param {Object} event event data.
- */
- const findClosestRange = useCallback(
- ( event: React.MouseEvent< HTMLDivElement > ) => {
- if (
- isLoading ||
- ! hasValidConstraints ||
- ! minRange.current ||
- ! maxRange.current
- ) {
- return;
- }
- const bounds = ( event.target as Element ).getBoundingClientRect();
- const x = event.clientX - bounds.left;
- const minWidth = minRange.current.offsetWidth;
- const minValue = +minRange.current.value;
- const maxWidth = maxRange.current.offsetWidth;
- const maxValue = +maxRange.current.value;
-
- const minX = minWidth * ( minValue / maxConstraint );
- const maxX = maxWidth * ( maxValue / maxConstraint );
-
- const minXDiff = Math.abs( x - minX );
- const maxXDiff = Math.abs( x - maxX );
-
- /**
- * The default z-index in the stylesheet as 20. 20 vs 21 is just for determining which range
- * slider should be at the front and has no meaning beyond
- */
- if ( minXDiff > maxXDiff ) {
- minRange.current.style.zIndex = '20';
- maxRange.current.style.zIndex = '21';
- } else {
- minRange.current.style.zIndex = '21';
- maxRange.current.style.zIndex = '20';
- }
- },
- [ isLoading, maxConstraint, hasValidConstraints ]
- );
-
- /**
- * Called when the slider is dragged.
- */
- const rangeInputOnChange = useCallback(
- ( event: React.ChangeEvent< HTMLInputElement > ) => {
- const isMin = event.target.classList.contains(
- 'wc-block-price-filter__range-input--min'
- );
- const targetValue = +event.target.value;
- const currentValues: [ number, number ] = isMin
- ? [
- Math.round( targetValue / stepValue ) * stepValue,
- maxPrice,
- ]
- : [
- minPrice,
- Math.round( targetValue / stepValue ) * stepValue,
- ];
- const values = constrainRangeSliderValues(
- currentValues,
- minConstraint,
- maxConstraint,
- stepValue,
- isMin
- );
- onChange( values );
- },
- [
- onChange,
- minPrice,
- maxPrice,
- minConstraint,
- maxConstraint,
- stepValue,
- ]
- );
-
- /**
- * Called when a price input loses focus - commit changes to slider.
- */
- const priceInputOnBlur = useCallback(
- ( event: React.FocusEvent< HTMLInputElement > ) => {
- // Only refresh when finished editing the min and max fields.
- if (
- event.relatedTarget &&
- ( event.relatedTarget as Element ).classList &&
- ( event.relatedTarget as Element ).classList.contains(
- 'wc-block-price-filter__amount'
- )
- ) {
- return;
- }
-
- const isMin = event.target.classList.contains(
- 'wc-block-price-filter__amount--min'
- );
-
- // When the user inserts in the max price input a value less or equal than the current minimum price,
- // we set to 0 the minimum price.
- if ( minPriceInput >= maxPriceInput ) {
- const values = constrainRangeSliderValues(
- [ 0, maxPriceInput ],
- null,
- null,
- stepValue,
- isMin
- );
- return onChange( [
- parseInt( values[ 0 ], 10 ),
- parseInt( values[ 1 ], 10 ),
- ] );
- }
-
- const values = constrainRangeSliderValues(
- [ minPriceInput, maxPriceInput ],
- null,
- null,
- stepValue,
- isMin
- );
- onChange( values );
- },
- [ onChange, stepValue, minPriceInput, maxPriceInput ]
- );
-
- const debouncedUpdateQuery = useDebouncedCallback( onSubmit, 600 );
-
- const classes = classnames(
- 'wc-block-price-filter',
- 'wc-block-components-price-slider',
- showInputFields && 'wc-block-price-filter--has-input-fields',
- showInputFields && 'wc-block-components-price-slider--has-input-fields',
- showFilterButton && 'wc-block-price-filter--has-filter-button',
- showFilterButton &&
- 'wc-block-components-price-slider--has-filter-button',
- ! hasValidConstraints && 'is-disabled',
- ( inlineInput || wrapperWidth <= 300 ) &&
- 'wc-block-components-price-slider--is-input-inline'
- );
-
- const activeElement = isObject( minRange.current )
- ? minRange.current.ownerDocument.activeElement
- : undefined;
- const minRangeStep =
- activeElement && activeElement === minRange.current ? stepValue : 1;
- const maxRangeStep =
- activeElement && activeElement === maxRange.current ? stepValue : 1;
-
- const ariaReadableMinPrice = String(
- minPriceInput / 10 ** currency.minorUnit
- );
- const ariaReadableMaxPrice = String(
- maxPriceInput / 10 ** currency.minorUnit
- );
-
- const inlineInputAvailable = inlineInput && wrapperWidth > 300;
-
- const slider = (
-
- { hasValidConstraints && (
-
- ) }
-
- );
-
- const getInputClassName = ( type: 'min' | 'max' ) =>
- `wc-block-price-filter__amount wc-block-price-filter__amount--${ type } wc-block-form-text-input wc-block-components-price-slider__amount wc-block-components-price-slider__amount--${ type }`;
-
- const commonFormattedMonetaryAmountProps = {
- currency,
- decimalScale: 0,
- };
-
- const commonFormattedMonetaryAmountInputProps = {
- ...commonFormattedMonetaryAmountProps,
- displayType: 'input',
- allowNegative: false,
- disabled: isLoading || ! hasValidConstraints,
- onBlur: priceInputOnBlur,
- };
-
- return (
-
- { ( ! inlineInputAvailable || ! showInputFields ) && slider }
- { showInputFields && (
-
- { ! isUpdating ? (
-
{
- if ( value === minPriceInput ) {
- return;
- }
- setMinPriceInput( value );
- } }
- value={ minPriceInput }
- />
- ) : (
-
- ) }
- { inlineInputAvailable && slider }
- { ! isUpdating ? (
- {
- if ( value === maxPriceInput ) {
- return;
- }
- setMaxPriceInput( value );
- } }
- value={ maxPriceInput }
- />
- ) : (
-
- ) }
-
- ) }
-
- { ! showInputFields &&
- ! isUpdating &&
- Number.isFinite( minPrice ) &&
- Number.isFinite( maxPrice ) && (
-
-
-
-
- ) }
- {
-
- { ( isEditor ||
- ( ! isUpdating &&
- ( minPrice !== minConstraint ||
- maxPrice !== maxConstraint ) ) ) && (
- {
- onChange( [ minConstraint, maxConstraint ] );
- debouncedUpdateQuery();
- } }
- screenReaderLabel={ __(
- 'Reset price filter',
- 'woo-gutenberg-products-block'
- ) }
- />
- ) }
- { showFilterButton && (
-
- ) }
-
- }
-
- );
-};
-
-export default PriceSlider;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/stories/index.stories.tsx
deleted file mode 100644
index 053dd1ac..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/stories/index.stories.tsx
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-import { useState } from '@wordpress/element';
-import { currencies, currencyControl } from '@woocommerce/storybook-controls';
-
-/**
- * Internal dependencies
- */
-import PriceSlider, { PriceSliderProps } from '..';
-
-export default {
- title: 'Base Components/PriceSlider',
- component: PriceSlider,
- args: {
- currency: currencies.USD,
- maxPrice: 5000,
- maxConstraint: 5000,
- minConstraint: 1000,
- minPrice: 1000,
- step: 250,
- },
- argTypes: {
- currency: currencyControl,
- maxPrice: { control: { disable: true } },
- minPrice: { control: { disable: true } },
- },
-} as Meta< PriceSliderProps >;
-
-const Template: Story< PriceSliderProps > = ( args ) => {
- const { maxPrice, minPrice, ...props } = args;
- // PriceSlider expects client to update min & max price, i.e. is a controlled component
- const [ min, setMin ] = useState( minPrice );
- const [ max, setMax ] = useState( maxPrice );
-
- return (
- {
- setMin( newMin );
- setMax( newMax );
- } }
- />
- );
-};
-
-export const Default = Template.bind( {} );
-
-export const WithoutInputs = Template.bind( {} );
-WithoutInputs.args = {
- showInputFields: false,
-};
-
-export const WithButton = Template.bind( {} );
-WithButton.args = {
- showFilterButton: true,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/style.scss
deleted file mode 100644
index feb3a2e8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/style.scss
+++ /dev/null
@@ -1,390 +0,0 @@
-
-@mixin thumb {
- background: $white;
- background-position: 0 0;
- box-sizing: content-box;
- width: 12px;
- height: 12px;
- border: 2px solid $gray-900;
- border-radius: 100%;
- padding: 0;
- margin: 0;
- vertical-align: top;
- cursor: pointer;
- z-index: 20;
- pointer-events: auto;
- transition: transform 0.2s ease-in-out;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
- &:hover {
- @include thumbFocus;
- }
-}
-
-@mixin thumbFocus {
- background: $gray-900;
- border-color: $white;
-}
-
-
-@mixin track {
- cursor: default;
- height: 1px;
- /* Required for Samsung internet based browsers */
- outline: 0;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
-}
-
-@mixin reset {
- margin: 0;
- /* Use !important to prevent theme input styles from breaking the component.
- Reference https://github.com/woocommerce/woocommerce-gutenberg-products-block/issues/3902
- */
- padding: 0 !important;
- border: 0 !important;
- outline: none;
- background: transparent;
- -webkit-appearance: none;
- -moz-appearance: none;
- appearance: none;
-}
-
-.wc-block-components-price-slider {
- margin-bottom: $gap-large;
- &.is-loading.is-disabled {
- .wc-block-components-price-slider__range-input-wrapper,
- .wc-block-components-filter-reset-button,
- .wc-block-components-filter-submit-button {
- @include placeholder();
- box-shadow: none;
- }
- .wc-block-components-price-slider__amount {
- display: none;
- }
- }
- &.is-disabled:not(.is-loading) {
- .wc-block-components-price-slider__range-input-wrapper,
- .wc-block-components-price-slider__amount,
- .wc-block-components-price-slider__button {
- animation: none;
- }
- }
-}
-
-.wc-block-components-price-slider__range-input-wrapper {
- @include reset;
- background: transparent;
- border-radius: 4px;
- clear: both;
- flex-grow: 1;
- height: 4px;
- margin: 15px 0;
- position: relative;
-
- &::before {
- content: "";
- position: absolute;
- top: 0;
- right: 0;
- left: 0;
- bottom: 0;
- background: currentColor;
- opacity: 0.2;
- }
-
- &.is-loading {
- @include placeholder();
- height: em(9px);
- border-radius: 0;
- }
-}
-
-.wc-block-components-price-slider__range-input-progress {
- height: 4px;
- left: 0;
- position: absolute;
- top: 0;
- width: 100%;
- --track-background: linear-gradient(to right, transparent var(--low), var(--range-color) 0, var(--range-color) var(--high), transparent 0) no-repeat 0 100% / 100% 100%;
- --range-color: currentColor;
- /*rtl:ignore*/
- background: var(--track-background);
-}
-
-.wc-block-components-price-slider__controls {
- align-items: center;
- display: flex;
- gap: $gap-smaller;
- justify-content: space-between;
- margin: $gap 0;
- .wc-block-components-price-slider__amount {
- margin: 0;
- border-radius: 4px;
- border-width: 1px;
- width: auto;
- max-width: 80px;
- min-width: 0;
- padding: $gap-smaller;
- @include font-size(small);
- .wc-block-components-price-slider--is-input-inline & {
- max-width: 60px;
- }
- &.is-loading {
- @include placeholder();
- border-radius: 0 !important;
- width: max-content;
- }
- }
-}
-
-.wc-block-components-price-slider__range-text {
- align-items: center;
- display: flex;
- justify-content: space-between;
- margin: $gap-large 0;
-
- .wc-block-components-formatted-money-amount {
- @include font-size(small);
- }
-}
-
-.wc-block-components-price-slider__actions {
- align-items: center;
- display: flex;
- gap: $gap;
- justify-content: flex-end;
- // The specificity here is needed to overwrite the margin-top that is inherited on WC block template pages such as Shop.
- button[type="submit"]:not(.wp-block-search__button).wc-block-components-filter-submit-button {
- margin-top: 0;
- margin-left: 0;
- @include font-size(small);
- }
-}
-
-.wc-block-components-price-slider__range-input {
- @include reset;
- width: 100%;
- height: 0;
- display: block;
- pointer-events: none;
- outline: none !important;
- position: absolute;
- left: 0;
- top: 0;
- &::-webkit-slider-runnable-track {
- @include track;
- }
- &::-webkit-slider-thumb {
- @include thumb;
- margin: -5px 0 0 0;
- }
- &::-webkit-slider-progress {
- @include reset;
- }
- &::-moz-focus-outer {
- border: 0;
- }
- &::-moz-range-track {
- @include track;
- }
- &::-moz-range-progress {
- @include reset;
- }
- &::-moz-range-thumb {
- @include thumb;
- }
- &::-ms-thumb {
- @include thumb;
- }
- &:focus {
- &::-webkit-slider-thumb {
- @include thumbFocus;
- }
- &::-moz-range-thumb {
- @include thumbFocus;
- }
- &::-ms-thumb {
- @include thumbFocus;
- }
- }
- &.wc-block-components-price-slider__range-input--min {
- z-index: 21;
- &::-webkit-slider-thumb {
- margin-left: -2px;
- background-position-x: left;
- }
- &::-moz-range-thumb {
- background-position-x: left;
- transform: translate(-2px, 2px);
- }
- &::-ms-thumb {
- background-position-x: left;
- }
- }
- &.wc-block-components-price-slider__range-input--max {
- z-index: 20;
- &::-webkit-slider-thumb {
- background-position-x: right;
- margin-left: 2px;
- }
- &::-moz-range-thumb {
- background-position-x: right;
- transform: translate(2px, 2px);
- }
- &::-ms-thumb {
- background-position-x: right;
- }
- }
-}
-
-.rtl {
- .wc-block-components-price-slider__range-input-progress {
- --track-background: linear-gradient(to left, transparent var(--low), var(--range-color) 0, var(--range-color) var(--high), transparent 0) no-repeat 0 100% / 100% 100%;
- --range-color: #{$studio-woocommerce-purple-30};
- background: var(--track-background);
- }
-}
-
-@mixin ie-fixes() {
- .wc-block-components-price-slider__range-input-wrapper {
- background: transparent;
- box-shadow: none;
- height: 24px;
- }
- .wc-block-components-price-slider__range-input-progress {
- background: #{$studio-woocommerce-purple-30};
- width: 100%;
- top: 7px;
- }
- .wc-block-components-price-slider__range-input {
- height: 24px;
- pointer-events: auto;
- &::-ms-track {
- /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */
- background: transparent;
- /*leave room for the larger thumb to overflow with a transparent border */
- border-color: transparent;
- border-width: 7px 0;
- /*remove default tick marks*/
- color: transparent;
- }
- &::-ms-fill-lower {
- background: #e1e1e1;
- box-shadow: 0 0 0 1px inset #b8b8b8;
- }
- &::-ms-fill-upper {
- background: transparent;
- }
- &::-ms-tooltip {
- display: none;
- }
- &::-ms-thumb {
- transform: translate(1px, 0);
- pointer-events: auto;
- }
- }
- .wc-block-components-price-slider__range-input--max {
- &::-ms-fill-upper {
- background: #e1e1e1;
- box-shadow: 0 0 0 1px inset #b8b8b8;
- }
- &::-ms-fill-lower {
- background: transparent;
- }
- }
- .wc-block-components-price-slider {
- &.is-loading.is-disabled {
- .wc-block-components-price-slider__range-input-wrapper {
- @include placeholder();
- box-shadow: none;
- }
- }
- &.is-disabled:not(.is-loading) {
- .wc-block-components-price-slider__range-input-wrapper {
- animation: none;
- }
- }
- }
-}
-
-
-/* IE 11 will not support multi-range slider due to poor pointer-events support on the thumb. Reverts to 2 sliders. */
-
-@include ie11() {
- @include ie-fixes();
-}
-
-// Targets Edge <= 18.
-@supports (-ms-ime-align:auto) {
- @include ie-fixes();
-}
-
-.theme-twentytwentyone {
- $border-width: 3px;
- .wc-block-components-price-slider__range-input-wrapper {
- background: transparent;
- border: $border-width solid currentColor;
- box-sizing: border-box;
- }
- .wc-block-components-price-slider__range-input-progress {
- --range-color: currentColor;
- }
- .wc-block-price-filter__range-input {
- background: transparent;
- height: 0;
- width: calc(100% + #{$border-width * 2});
- &:hover,
- &:focus {
- &::-webkit-slider-thumb {
- filter: none;
- }
- &::-moz-range-thumb {
- filter: none;
- }
- &::-ms-thumb {
- filter: none;
- }
- }
- &::-webkit-slider-thumb {
- background: $white;
- margin-top: -6px;
- width: 12px;
- height: 12px;
- }
- &.wc-block-components-price-slider__range-input--max::-moz-range-thumb {
- background: $white;
- transform: translate(2px, 2px);
- width: 12px;
- height: 12px;
- box-sizing: content-box;
- }
- &.wc-block-components-price-slider__range-input--min::-moz-range-thumb {
- background: $white;
- transform: translate(-2px, 2px);
- width: 12px;
- height: 12px;
- box-sizing: content-box;
- }
- &::-ms-track {
- border-color: transparent !important;
- }
- }
- @include ie11() {
- .wc-block-components-price-slider__range-input-wrapper {
- border: 0;
- position: relative;
- height: 50px;
- }
- .wc-block-components-price-slider__range-input-progress {
- display: none;
- }
- .wc-block-price-filter__range-input {
- height: 100%;
- margin: 0;
- width: 100%;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/test/constrain-range-slider-values.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/test/constrain-range-slider-values.js
deleted file mode 100644
index dce3a332..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/test/constrain-range-slider-values.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Internal dependencies
- */
-import { constrainRangeSliderValues } from '../constrain-range-slider-values';
-
-describe( 'constrainRangeSliderValues', () => {
- test.each`
- values | min | max | step | isMin | expected
- ${ [ 20, 60 ] } | ${ 0 } | ${ 70 } | ${ 10 } | ${ true } | ${ [ 20, 60 ] }
- ${ [ 20, 60 ] } | ${ 20 } | ${ 60 } | ${ 10 } | ${ true } | ${ [ 20, 60 ] }
- ${ [ 20, 60 ] } | ${ 30 } | ${ 50 } | ${ 10 } | ${ true } | ${ [ 30, 50 ] }
- ${ [ 50, 50 ] } | ${ 20 } | ${ 60 } | ${ 10 } | ${ true } | ${ [ 50, 60 ] }
- ${ [ 50, 50 ] } | ${ 20 } | ${ 60 } | ${ 10 } | ${ false } | ${ [ 40, 50 ] }
- ${ [ 20, 60 ] } | ${ null } | ${ null } | ${ 10 } | ${ true } | ${ [ 20, 60 ] }
- ${ [ null, null ] } | ${ 20 } | ${ 60 } | ${ 10 } | ${ true } | ${ [ 20, 60 ] }
- ${ [ '20', '60' ] } | ${ 30 } | ${ 50 } | ${ 10 } | ${ true } | ${ [ 30, 50 ] }
- ${ [ -60, -20 ] } | ${ -70 } | ${ 0 } | ${ 10 } | ${ true } | ${ [ -60, -20 ] }
- ${ [ -60, -20 ] } | ${ -60 } | ${ -20 } | ${ 10 } | ${ true } | ${ [ -60, -20 ] }
- ${ [ -60, -20 ] } | ${ -50 } | ${ -30 } | ${ 10 } | ${ true } | ${ [ -50, -30 ] }
- ${ [ -50, -50 ] } | ${ -60 } | ${ -20 } | ${ 10 } | ${ true } | ${ [ -50, -40 ] }
- ${ [ -50, -50 ] } | ${ -60 } | ${ -20 } | ${ 10 } | ${ false } | ${ [ -60, -50 ] }
- ${ [ -60, -20 ] } | ${ null } | ${ null } | ${ 10 } | ${ true } | ${ [ -60, -20 ] }
- ${ [ null, null ] } | ${ -60 } | ${ -20 } | ${ 10 } | ${ true } | ${ [ -60, -20 ] }
- ${ [ '-60', '-20' ] } | ${ -50 } | ${ -30 } | ${ 10 } | ${ true } | ${ [ -50, -30 ] }
- `(
- `correctly sets prices to its constraints with arguments values: $values, min: $min, max: $max, step: $step and isMin: $isMin`,
- ( { values, min, max, step, isMin, expected } ) => {
- const constrainedValues = constrainRangeSliderValues(
- values,
- min,
- max,
- step,
- isMin
- );
-
- expect( constrainedValues ).toEqual( expected );
- }
- );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/utils.ts
deleted file mode 100644
index 496d1c8d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/price-slider/utils.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * External dependencies
- */
-import type { NumberFormatValues } from 'react-number-format';
-
-/**
- Check if that the value is minor than the max price and greater than 0.
- */
-export const isValidMaxValue =
- ( {
- maxConstraint,
- minorUnit,
- }: {
- maxConstraint: number;
- minorUnit: number;
- } ) =>
- ( { floatValue }: NumberFormatValues ): boolean => {
- const maxPrice = maxConstraint / 10 ** minorUnit;
-
- return (
- floatValue !== undefined && floatValue <= maxPrice && floatValue > 0
- );
- };
-
-/**
- Check if that the value is minor than the max price and greater than 0.
- */
-export const isValidMinValue =
- ( {
- minConstraint,
- currentMaxValue,
- minorUnit,
- }: {
- minConstraint: number;
- currentMaxValue: number;
- minorUnit: number;
- } ) =>
- ( { floatValue }: NumberFormatValues ): boolean => {
- const minPrice = minConstraint / 10 ** minorUnit;
- const currentMaxPrice = currentMaxValue / 10 ** minorUnit;
-
- return (
- floatValue !== undefined &&
- floatValue >= minPrice &&
- floatValue < currentMaxPrice
- );
- };
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/container.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/container.tsx
deleted file mode 100644
index 050085ea..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/container.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * External dependencies
- */
-import { useState, useEffect } from '@wordpress/element';
-import type { HTMLElementEvent } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import ProductList from './product-list';
-import { ProductListContainerProps } from './types';
-
-const ProductListContainer = ( {
- attributes,
-}: ProductListContainerProps ): JSX.Element => {
- const [ currentPage, setPage ] = useState( 1 );
- const [ currentSort, setSort ] = useState( attributes.orderby );
- useEffect( () => {
- // if default sort is changed in editor
- setSort( attributes.orderby );
- }, [ attributes.orderby ] );
- const onPageChange = ( newPage: number ) => {
- setPage( newPage );
- };
- const onSortChange = ( event: HTMLElementEvent< HTMLSelectElement > ) => {
- const newSortValue = event?.target?.value;
- setSort( newSortValue );
- setPage( 1 );
- };
-
- return (
-
- );
-};
-
-export default ProductListContainer;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/index.ts
deleted file mode 100644
index bdb13a3c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { default as ProductList } from './product-list';
-export { default as ProductListContainer } from './container';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-matching-products.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-matching-products.tsx
deleted file mode 100644
index a0353c7c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-matching-products.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useInnerBlockLayoutContext } from '@woocommerce/shared-context';
-import { Icon, search } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import { NoMatchingProductsProps } from './types';
-
-const NoMatchingProducts = ( {
- resetCallback = () => void 0,
-}: NoMatchingProductsProps ): JSX.Element => {
- const { parentClassName } = useInnerBlockLayoutContext();
- return (
-
-
-
- { __( 'No products found', 'woo-gutenberg-products-block' ) }
-
-
- { __(
- 'We were unable to find any results based on your search.',
- 'woo-gutenberg-products-block'
- ) }
-
-
- { __( 'Reset Search', 'woo-gutenberg-products-block' ) }
-
-
- );
-};
-
-export default NoMatchingProducts;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-products.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-products.tsx
deleted file mode 100644
index fd55bfb6..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/no-products.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useInnerBlockLayoutContext } from '@woocommerce/shared-context';
-import { Icon, warning } from '@wordpress/icons';
-
-const NoProducts = (): JSX.Element => {
- const { parentClassName } = useInnerBlockLayoutContext();
- return (
-
-
-
- { __( 'No products', 'woo-gutenberg-products-block' ) }
-
-
- { __(
- 'There are currently no products available to display.',
- 'woo-gutenberg-products-block'
- ) }
-
-
- );
-};
-
-export default NoProducts;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/index.tsx
deleted file mode 100644
index 9fc17f97..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/index.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { useInnerBlockLayoutContext } from '@woocommerce/shared-context';
-import { withInstanceId } from '@wordpress/compose';
-
-/**
- * Internal dependencies
- */
-import { renderProductLayout } from './utils';
-import { ProductListItemProps } from '../types';
-
-const ProductListItem = ( {
- product = {},
- attributes,
- instanceId,
-}: ProductListItemProps ): JSX.Element => {
- const { layoutConfig } = attributes;
- const { parentClassName, parentName } = useInnerBlockLayoutContext();
- const isLoading = Object.keys( product ).length === 0;
- const classes = classnames(
- `${ parentClassName }__product`,
- 'wc-block-layout',
- {
- 'is-loading': isLoading,
- }
- );
-
- return (
-
- { renderProductLayout(
- parentName,
- product,
- layoutConfig,
- instanceId
- ) }
-
- );
-};
-
-export default withInstanceId( ProductListItem );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/utils.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/utils.tsx
deleted file mode 100644
index 8d80666e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list-item/utils.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * External dependencies
- */
-import { getBlockMap } from '@woocommerce/atomic-utils';
-import { Suspense } from '@wordpress/element';
-import { ProductResponseItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import { LayoutConfig } from '../types';
-
-/**
- * Maps a layout config into atomic components.
- *
- * @param {string} blockName Name of the parent block. Used to get extension children.
- * @param {Object} product Product object to pass to atomic components.
- * @param {Object[]} layoutConfig Object with component data.
- * @param {number} componentId Parent component ID needed for key generation.
- */
-export const renderProductLayout = (
- blockName: string,
- product: Partial< ProductResponseItem >,
- layoutConfig: LayoutConfig | undefined,
- componentId: number
-): ( JSX.Element | null )[] | undefined => {
- if ( ! layoutConfig ) {
- return;
- }
-
- const blockMap = getBlockMap( blockName );
- return layoutConfig.map( ( [ name, props = {} ], index ) => {
- let children = [] as ( JSX.Element | null )[] | undefined;
-
- if ( !! props.children && props.children.length > 0 ) {
- // props.children here refers to the children stored in the block attributes. which
- // has the same shape as `layoutConfig`, not React children, which has a different shape */
- children = renderProductLayout(
- blockName,
- product,
- props.children,
- componentId
- );
- }
-
- const LayoutComponent = blockMap[ name ] as React.ComponentType< {
- product: Partial< ProductResponseItem >;
- } >;
-
- if ( ! LayoutComponent ) {
- return null;
- }
-
- const productID = product.id || 0;
- const keyParts = [ 'layout', name, index, componentId, productID ];
-
- return (
- }
- >
-
-
- );
- } );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list.tsx
deleted file mode 100644
index e1661673..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-list.tsx
+++ /dev/null
@@ -1,275 +0,0 @@
-/**
- * External dependencies
- */
-import { __, _n, sprintf } from '@wordpress/i18n';
-import fastDeepEqual from 'fast-deep-equal/es6';
-import classnames from 'classnames';
-import Pagination from '@woocommerce/base-components/pagination';
-import { useEffect } from '@wordpress/element';
-import { usePrevious } from '@woocommerce/base-hooks';
-import {
- useStoreEvents,
- useStoreProducts,
- useSynchronizedQueryState,
- useQueryStateByKey,
-} from '@woocommerce/base-context/hooks';
-import withScrollToTop from '@woocommerce/base-hocs/with-scroll-to-top';
-import { useInnerBlockLayoutContext } from '@woocommerce/shared-context';
-import { speak } from '@wordpress/a11y';
-
-/**
- * Internal dependencies
- */
-import NoProducts from './no-products';
-import NoMatchingProducts from './no-matching-products';
-import ProductSortSelect from './product-sort-select';
-import ProductListItem from './product-list-item';
-import {
- GenerateQuery,
- GetSortArgs,
- Query,
- AreQueryTotalsDifferent,
- ProductListProps,
- TotalQuery,
-} from './types';
-import './style.scss';
-
-const getSortArgs: GetSortArgs = ( orderName ) => {
- switch ( orderName ) {
- case 'menu_order':
- case 'popularity':
- case 'rating':
- case 'price':
- return {
- orderby: orderName,
- order: 'asc',
- };
- case 'price-desc':
- return {
- orderby: 'price',
- order: 'desc',
- };
- case 'date':
- return {
- orderby: 'date',
- order: 'desc',
- };
- }
-};
-
-const generateQuery: GenerateQuery = ( {
- sortValue,
- currentPage,
- attributes,
-} ) => {
- const { columns, rows } = attributes;
-
- return {
- ...getSortArgs( sortValue ),
- catalog_visibility: 'catalog',
- per_page: columns * rows,
- page: currentPage,
- };
-};
-
-/**
- * Given a query state, returns the same query without the attributes related to
- * pagination and sorting.
- *
- * @param {Object} query Query to extract the attributes from.
- *
- * @return {Object} Same query without pagination and sorting attributes.
- */
-
-const extractPaginationAndSortAttributes = ( query: Query ): TotalQuery => {
- /* eslint-disable-next-line no-unused-vars */
- const { order, orderby, page, per_page: perPage, ...totalQuery } = query;
- return totalQuery || {};
-};
-
-const announceLoadingCompletion = ( totalProducts: number ): void => {
- if ( ! Number.isFinite( totalProducts ) ) {
- return;
- }
-
- if ( totalProducts === 0 ) {
- speak( __( 'No products found', 'woo-gutenberg-products-block' ) );
- } else {
- speak(
- sprintf(
- /* translators: %s is an integer higher than 0 (1, 2, 3...) */
- _n(
- '%d product found',
- '%d products found',
- totalProducts,
- 'woo-gutenberg-products-block'
- ),
- totalProducts
- )
- );
- }
-};
-
-const areQueryTotalsDifferent: AreQueryTotalsDifferent = (
- { totalQuery: nextQuery, totalProducts: nextProducts },
- { totalQuery: currentQuery } = {}
-) =>
- ! fastDeepEqual( nextQuery, currentQuery ) &&
- Number.isFinite( nextProducts );
-
-const ProductList = ( {
- attributes,
- currentPage,
- onPageChange,
- onSortChange,
- sortValue,
- scrollToTop,
-}: ProductListProps ): JSX.Element => {
- // These are possible filters.
- const [ productAttributes, setProductAttributes ] = useQueryStateByKey(
- 'attributes',
- []
- );
- const [ productStockStatus, setProductStockStatus ] = useQueryStateByKey(
- 'stock_status',
- []
- );
- const [ productRating, setProductRating ] = useQueryStateByKey(
- 'rating',
- []
- );
-
- const [ minPrice, setMinPrice ] = useQueryStateByKey( 'min_price' );
- const [ maxPrice, setMaxPrice ] = useQueryStateByKey( 'max_price' );
-
- const [ queryState ] = useSynchronizedQueryState(
- generateQuery( {
- attributes,
- sortValue,
- currentPage,
- } )
- );
- const { products, totalProducts, productsLoading } =
- useStoreProducts( queryState );
- const { parentClassName, parentName } = useInnerBlockLayoutContext();
- const totalQuery = extractPaginationAndSortAttributes( queryState );
- const { dispatchStoreEvent } = useStoreEvents();
-
- // Only update previous query totals if the query is different and the total number of products is a finite number.
- const previousQueryTotals = usePrevious(
- { totalQuery, totalProducts },
- areQueryTotalsDifferent
- );
-
- // If the product list changes, trigger an event.
- useEffect( () => {
- dispatchStoreEvent( 'product-list-render', {
- products,
- listName: parentName,
- } );
- }, [ products, parentName, dispatchStoreEvent ] );
-
- // If query state (excluding pagination/sorting attributes) changed, reset pagination to the first page.
- useEffect( () => {
- if ( fastDeepEqual( totalQuery, previousQueryTotals?.totalQuery ) ) {
- return;
- }
- onPageChange( 1 );
-
- // Make sure there was a previous query, so we don't announce it on page load.
- if ( previousQueryTotals?.totalQuery ) {
- announceLoadingCompletion( totalProducts );
- }
- }, [
- previousQueryTotals?.totalQuery,
- totalProducts,
- onPageChange,
- totalQuery,
- ] );
-
- const onPaginationChange = ( newPage: number ) => {
- scrollToTop( { focusableSelector: 'a, button' } );
- onPageChange( newPage );
- };
-
- const getClassnames = () => {
- const { columns, rows, alignButtons, align } = attributes;
- const alignClass = typeof align !== 'undefined' ? 'align' + align : '';
-
- return classnames(
- parentClassName,
- alignClass,
- 'has-' + columns + '-columns',
- {
- 'has-multiple-rows': rows > 1,
- 'has-aligned-buttons': alignButtons,
- }
- );
- };
-
- const { contentVisibility } = attributes;
- const perPage = attributes.columns * attributes.rows;
- const totalPages =
- ! Number.isFinite( totalProducts ) &&
- Number.isFinite( previousQueryTotals?.totalProducts ) &&
- fastDeepEqual( totalQuery, previousQueryTotals?.totalQuery )
- ? Math.ceil( ( previousQueryTotals?.totalProducts || 0 ) / perPage )
- : Math.ceil( totalProducts / perPage );
- const listProducts = products.length
- ? products
- : Array.from( { length: perPage } );
- const hasProducts = products.length !== 0 || productsLoading;
- const hasFilters =
- productAttributes.length > 0 ||
- productStockStatus.length > 0 ||
- productRating.length > 0 ||
- Number.isFinite( minPrice ) ||
- Number.isFinite( maxPrice );
-
- return (
-
- { contentVisibility?.orderBy && hasProducts && (
-
- ) }
- { ! hasProducts && hasFilters && (
-
{
- setProductAttributes( [] );
- setProductStockStatus( [] );
- setProductRating( [] );
- setMinPrice( null );
- setMaxPrice( null );
- } }
- />
- ) }
- { ! hasProducts && ! hasFilters && }
- { hasProducts && (
-
- { listProducts.map( ( product = {}, i: number ) => (
-
- ) ) }
-
- ) }
- { totalPages > 1 && (
-
- ) }
-
- );
-};
-
-export default withScrollToTop( ProductList );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/index.tsx
deleted file mode 100644
index 2d6b9aa9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/index.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { SortSelect } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import { ProductSortSelectProps } from '../types';
-
-const ProductSortSelect = ( {
- onChange,
- value,
-}: ProductSortSelectProps ): JSX.Element => {
- return (
-
- );
-};
-
-export default ProductSortSelect;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/style.scss
deleted file mode 100644
index 032dcaab..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/product-sort-select/style.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.wc-block-components-product-sort-select {
- margin-bottom: $gap-large;
- text-align: left;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/style.scss
deleted file mode 100644
index cc92e94c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/style.scss
+++ /dev/null
@@ -1,141 +0,0 @@
-@keyframes spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
-
-.wc-block-grid {
- text-align: center;
-}
-
-.wc-block-grid__no-products {
- padding: $gap-largest;
- text-align: center;
- width: 100%;
-
- .wc-block-grid__no-products-image {
- max-width: 150px;
- margin: 0 auto 1em;
- display: block;
- color: inherit;
- }
- .wc-block-grid__no-products-title {
- display: block;
- margin: 0;
- font-weight: bold;
- }
- .wc-block-grid__no-products-description {
- display: block;
- margin: 0.25em 0 1em 0;
- }
-}
-
-.wc-block-grid__products {
- display: flex;
- flex-wrap: wrap;
- padding: 0;
- margin: 0 (-$gap * 0.5) $gap;
- background-clip: padding-box;
-}
-
-.wc-block-grid__product {
- box-sizing: border-box;
- padding: 0;
- margin: 0;
- float: none;
- width: auto;
- position: relative;
- text-align: center;
- border-left: $gap * 0.5 solid transparent;
- border-right: $gap * 0.5 solid transparent;
- border-bottom: $gap solid transparent;
- list-style: none;
-}
-
-// Increased specificity necessary as Gutenberg's generic reset overrides box sizing
-.wc-block-grid__product.wc-block-grid__product {
- box-sizing: border-box;
-}
-
-.theme-twentytwenty .wc-block-grid,
-.wc-block-grid {
- &.has-aligned-buttons {
- .wc-block-grid__product {
- display: flex;
- flex-direction: column;
- }
- .wc-block-grid__product > :last-child {
- margin-top: auto;
- margin-bottom: 0;
- padding-bottom: $gap-small;
- }
- }
- @for $i from 1 to 9 {
- &.has-#{$i}-columns .wc-block-grid__product {
- flex: 1 0 #{ math.div(100%, $i) };
- max-width: math.div(100%, $i);
- }
- }
- // Adjust font size as more cols are added.
- &.has-6-columns .wc-block-grid__product {
- font-size: 0.5em;
- }
- &.has-6-columns.alignfull,
- &.has-5-columns {
- .wc-block-grid__product {
- font-size: 0.58em;
- }
- }
- &.has-5-columns.alignfull,
- &.has-4-columns:not(.alignwide):not(.alignfull) {
- .wc-block-grid__product {
- font-size: 0.75em;
- }
- }
- &.has-3-columns:not(.alignwide):not(.alignfull) {
- font-size: 0.92em;
- }
-}
-
-@include breakpoint("<480px") {
- .wc-block-grid {
- @for $i from 2 to 9 {
- &.has-#{$i}-columns {
- .wc-block-grid__products {
- display: block;
- }
- .wc-block-grid__product {
- margin-left: auto;
- margin-right: auto;
- flex: 1 0 100%;
- max-width: 100%;
- padding: 0;
- }
- }
- }
- }
-}
-
-@include breakpoint("480px-600px") {
- .wc-block-grid {
- @for $i from 2 to 9 {
- &.has-#{$i}-columns {
- .wc-block-grid__product {
- flex: 1 0 50%;
- max-width: 50%;
- padding: 0;
- margin: 0 0 $gap-large 0;
- }
- .wc-block-grid__product:nth-child(odd) {
- padding-right: $gap * 0.5;
- }
- .wc-block-grid__product:nth-child(even) {
- padding-left: $gap * 0.5;
- }
- }
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/types.ts
deleted file mode 100644
index 7c6e193a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-list/types.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * External dependencies
- */
-import type { ChangeEventHandler } from 'react';
-import type { ProductResponseItem } from '@woocommerce/types';
-
-interface GenerateQueryProps {
- sortValue: string;
- currentPage: number;
- attributes: Attributes;
-}
-
-export type LayoutConfig = [ string, { children?: LayoutConfig } ][];
-
-export type Attributes = {
- columns: number;
- rows: number;
- alignButtons?: string;
- align?: string;
- contentVisibility?: {
- orderBy: string;
- };
- orderby?: string;
- order?: string;
- layoutConfig?: LayoutConfig;
-};
-
-export type Query = {
- catalog_visibility: 'catalog';
- per_page: number;
- page: number;
- orderby?: string;
- order?: string;
-};
-
-export type TotalQuery = Pick< Query, 'catalog_visibility' >;
-
-export type GenerateQuery = ( props: GenerateQueryProps ) => Query;
-
-export type GetSortArgs = ( orderName: string ) =>
- | {
- orderby: string;
- order: string;
- }
- | undefined;
-
-export type AreQueryTotalsDifferent = (
- next: {
- totalQuery: TotalQuery;
- totalProducts: number;
- },
- current?: {
- totalQuery?: TotalQuery;
- }
-) => boolean;
-
-export interface ProductListProps {
- attributes: Attributes;
- currentPage: number;
- onPageChange: ( page: number ) => void;
- onSortChange: ChangeEventHandler;
- sortValue:
- | 'menu_order'
- | 'popularity'
- | 'rating'
- | 'date'
- | 'price'
- | 'price-desc';
- scrollToTop: ( opts: { focusableSelector: string } ) => void;
-}
-
-export interface ProductSortSelectProps {
- onChange: ChangeEventHandler;
- value: ProductListProps[ 'sortValue' ];
-}
-
-export interface ProductListContainerProps {
- attributes: Attributes;
- urlParameterSuffix: string | undefined;
-}
-
-export interface NoMatchingProductsProps {
- resetCallback: () => void;
-}
-
-export interface ProductListItemProps {
- product?: Partial< ProductResponseItem >;
- attributes: Attributes;
- instanceId: number;
-}
-
-export interface RenderProductLayoutProps {
- blockName: string;
- product: Partial< ProductResponseItem >;
- layoutConfig: LayoutConfig;
- componentId: number;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/index.tsx
deleted file mode 100644
index 02e3794f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/index.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * External dependencies
- */
-import { decodeEntities } from '@wordpress/html-entities';
-import classnames from 'classnames';
-import type { AnchorHTMLAttributes, HTMLAttributes } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface ProductNameProps
- extends AnchorHTMLAttributes< HTMLAnchorElement > {
- /**
- * If `true` renders a `span` element instead of a link
- */
- disabled?: boolean;
- /**
- * The product name
- *
- * Note: can be an HTML string
- */
- name: string;
- /**
- * Click handler
- */
- onClick?: () => void;
- /**
- * Link for the product
- */
- permalink?: string;
-}
-
-/**
- * Render the Product name.
- *
- * The store API runs titles through `wp_kses_post()` which removes dangerous HTML tags, so using it inside `dangerouslySetInnerHTML` is considered safe.
- */
-export const ProductName = ( {
- className = '',
- disabled = false,
- name,
- permalink = '',
- target,
- rel,
- style,
- onClick,
- ...props
-}: ProductNameProps ): JSX.Element => {
- const classes = classnames( 'wc-block-components-product-name', className );
- if ( disabled ) {
- // Cast the props as type HTMLSpanElement.
- const disabledProps = props as HTMLAttributes< HTMLSpanElement >;
- return (
-
- );
- }
- return (
-
- );
-};
-
-export default ProductName;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/stories/index.stories.tsx
deleted file mode 100644
index ff9551fc..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/stories/index.stories.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-
-/**
- * Internal dependencies
- */
-import ProductName, { ProductNameProps } from '..';
-
-export default {
- title: 'Base Components/ProductName',
- component: ProductName,
- args: {
- name: 'Test product',
- permalink: '#',
- },
-} as Meta< ProductNameProps >;
-
-const Template: Story< ProductNameProps > = ( args ) => (
-
-);
-
-export const Default = Template.bind( {} );
-Default.args = {
- disabled: false,
-};
-
-export const DisabledProduct = Template.bind( {} );
-DisabledProduct.args = {
- disabled: true,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/style.scss
deleted file mode 100644
index 2dd432a9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/style.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.wc-block-components-product-name {
- @include font-size(regular);
- @include wrap-break-word();
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/__snapshots__/index.js.snap b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/__snapshots__/index.js.snap
deleted file mode 100644
index 461da1b9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/__snapshots__/index.js.snap
+++ /dev/null
@@ -1,48 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ProductName should merge classes and props 1`] = `
-
-`;
-
-exports[`ProductName should not render a link if disabled is true 1`] = `
-
-`;
-
-exports[`ProductName should render a link if disabled is false 1`] = `
-
-`;
-
-exports[`ProductName should render a link if disabled is not defined 1`] = `
-
-`;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/index.js
deleted file mode 100644
index 890a7aaf..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-name/test/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer from 'react-test-renderer';
-
-/**
- * Internal dependencies
- */
-import ProductName from '..';
-
-describe( 'ProductName', () => {
- test( 'should not render a link if disabled is true', () => {
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-
- test( 'should render a link if disabled is false', () => {
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-
- test( 'should render a link if disabled is not defined', () => {
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-
- test( 'should merge classes and props', () => {
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/index.tsx
deleted file mode 100644
index 8ae0cba2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/index.tsx
+++ /dev/null
@@ -1,338 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import { FormattedMonetaryAmount } from '@woocommerce/blocks-components';
-import classNames from 'classnames';
-import { formatPrice } from '@woocommerce/price-format';
-import { createInterpolateElement } from '@wordpress/element';
-import type { Currency } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface PriceRangeProps {
- /**
- * Currency configuration object
- */
- currency: Currency | Record< string, never > | undefined;
- /**
- * The maximum price for the range
- */
- maxPrice: string | number;
- /**
- * The minimum price for the range
- */
- minPrice: string | number;
- /**
- * CSS class applied to each of the elements containing the prices
- *
- * **Note:** this excludes the dash in between the elements
- */
- priceClassName?: string | undefined;
- /**
- * Any custom style to be applied to each of the elements containing the prices
- *
- * **Note:** this excludes the dash in between the elements
- */
- priceStyle?: React.CSSProperties | undefined;
-}
-
-const PriceRange = ( {
- currency,
- maxPrice,
- minPrice,
- priceClassName,
- priceStyle = {},
-}: PriceRangeProps ) => {
- return (
- <>
-
- { sprintf(
- /* translators: %1$s min price, %2$s max price */
- __(
- 'Price between %1$s and %2$s',
- 'woo-gutenberg-products-block'
- ),
- formatPrice( minPrice ),
- formatPrice( maxPrice )
- ) }
-
-
-
- —
-
-
- >
- );
-};
-
-interface SalePriceProps {
- /**
- * Currency configuration object
- */
- currency: Currency | Record< string, never > | undefined;
- /**
- * CSS class to be applied to the regular price container
- *
- * i.e. `` element
- */
- regularPriceClassName?: string | undefined;
- /**
- * Custom style to be applied to the regular price container
- *
- * i.e. `` element
- */
- regularPriceStyle?: React.CSSProperties | undefined;
- /**
- * The regular price before the sale
- */
- regularPrice: number | string;
- /**
- * CSS class to be applied to the sale price container
- *
- * i.e. `` element
- */
- priceClassName?: string | undefined;
- /**
- * Custom style to be applied to the regular price container
- *
- * i.e. `` element
- */
- priceStyle?: React.CSSProperties | undefined;
- /**
- * The new price during the sale
- */
- price: number | string | undefined;
-}
-
-const SalePrice = ( {
- currency,
- regularPriceClassName,
- regularPriceStyle,
- regularPrice,
- priceClassName,
- priceStyle,
- price,
-}: SalePriceProps ) => {
- return (
- <>
-
- { __( 'Previous price:', 'woo-gutenberg-products-block' ) }
-
- (
-
- { value }
-
- ) }
- value={ regularPrice }
- />
-
- { __( 'Discounted price:', 'woo-gutenberg-products-block' ) }
-
- (
-
- { value }
-
- ) }
- value={ price }
- />
- >
- );
-};
-
-export interface ProductPriceProps {
- /**
- * Where to align the wrapper
- *
- * Applies the `wc-block-components-product-price--align-${ align }` utility
- * class to the wrapper.
- */
- align?: 'left' | 'center' | 'right' | undefined;
- /**
- * CSS class for the wrapper
- */
- className?: string | undefined;
- /**
- * Currency configuration object
- */
- currency?: Currency | Record< string, never >;
- /**
- * The string version of the element to use for the price interpolation
- *
- * **Note:** It should contain ` ` (which is also the default value)
- */
- format?: string;
- /**
- * The current price
- */
- price?: number | string;
- /**
- * CSS class for the current price wrapper
- */
- priceClassName?: string;
- /**
- * Custom style for the current price
- */
- priceStyle?: React.CSSProperties | undefined;
- /**
- * The maximum price in a range
- *
- * If both `maxPrice` and `minPrice` are set, the component will be rendered
- * as a `PriceRange` component, otherwise, this value will be ignored.
- */
- maxPrice?: number | string | undefined;
- /**
- * The minimum price in a range
- *
- * If both `maxPrice` and `minPrice` are set, the component will be rendered
- * as a `PriceRange` component, otherwise, this value will be ignored.
- */
- minPrice?: number | string | undefined;
- /**
- * The regular price if the item is currently on sale
- *
- * If this property exists and is different from the current price, then the
- * component will be rendered as a `SalePrice` component.
- */
- regularPrice?: number | string | undefined;
- /**
- * CSS class to apply to the regular price wrapper
- */
- regularPriceClassName?: string | undefined;
- /**
- * Custom style to apply to the regular price wrapper.
- */
- regularPriceStyle?: React.CSSProperties | undefined;
- /**
- * Custom margin to apply to the price wrapper.
- */
- style?:
- | Pick<
- React.CSSProperties,
- 'marginTop' | 'marginRight' | 'marginBottom' | 'marginLeft'
- >
- | undefined;
-}
-
-const ProductPrice = ( {
- align,
- className,
- currency,
- format = ' ',
- maxPrice,
- minPrice,
- price,
- priceClassName,
- priceStyle,
- regularPrice,
- regularPriceClassName,
- regularPriceStyle,
- style,
-}: ProductPriceProps ): JSX.Element => {
- const wrapperClassName = classNames(
- className,
- 'price',
- 'wc-block-components-product-price',
- {
- [ `wc-block-components-product-price--align-${ align }` ]: align,
- }
- );
-
- if ( ! format.includes( ' ' ) ) {
- format = ' ';
- // eslint-disable-next-line no-console
- console.error( 'Price formats need to include the ` ` tag.' );
- }
-
- const isDiscounted = regularPrice && price && price < regularPrice;
- let priceComponent = (
-
- );
-
- if ( isDiscounted ) {
- priceComponent = (
-
- );
- } else if ( minPrice !== undefined && maxPrice !== undefined ) {
- priceComponent = (
-
- );
- } else if ( price ) {
- priceComponent = (
-
- );
- }
-
- return (
-
- { createInterpolateElement( format, {
- price: priceComponent,
- } ) }
-
- );
-};
-
-export default ProductPrice;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/stories/index.stories.tsx
deleted file mode 100644
index a47a7457..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/stories/index.stories.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-import { currencyControl } from '@woocommerce/storybook-controls';
-
-/**
- * Internal dependencies
- */
-import ProductPrice, { ProductPriceProps } from '..';
-
-const ALLOWED_ALIGN_VALUES = [ 'left', 'center', 'right' ];
-
-export default {
- title: 'Base Components/ProductPrice',
- component: ProductPrice,
- argTypes: {
- align: {
- control: { type: 'radio' },
- options: ALLOWED_ALIGN_VALUES,
- },
- currency: currencyControl,
- },
- args: {
- align: 'left',
- format: ' ',
- price: 3000,
- currency: {
- code: 'USD',
- symbol: '$',
- thousandSeparator: ' ',
- decimalSeparator: '.',
- minorUnit: 2,
- prefix: '$',
- suffix: '',
- },
- },
-} as Meta< ProductPriceProps >;
-
-const Template: Story< ProductPriceProps > = ( args ) => (
-
-);
-
-export const Default = Template.bind( {} );
-Default.args = {};
-
-export const Sale = Template.bind( {} );
-Sale.args = {
- regularPrice: 4500,
-};
-
-export const Range = Template.bind( {} );
-Range.args = {
- maxPrice: 5000,
- minPrice: 3000,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/style.scss
deleted file mode 100644
index 8e72d641..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/style.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-/*rtl:begin:ignore*/
-.wc-block-components-product-price--align-left {
- display: block;
- text-align: left;
-}
-.wc-block-components-product-price--align-center {
- display: block;
- text-align: center;
-}
-.wc-block-components-product-price--align-right {
- display: block;
- text-align: right;
-}
-/*rtl:end:ignore*/
-
-.wc-block-components-product-price {
- display: block;
-
- .wc-block-all-products .wc-block-components-product-price {
- margin-bottom: $gap-small;
- }
-
- ins {
- text-decoration: none;
- }
-}
-
-.wc-block-components-product-price__value {
- &.is-discounted {
- margin-left: 0.5em;
- }
-}
-
-.is-loading {
- .wc-block-components-product-price::before {
- @include placeholder();
- content: ".";
- display: inline-block;
- width: 5em;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/__snapshots__/index.js.snap b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/__snapshots__/index.js.snap
deleted file mode 100644
index 291a2a0b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/__snapshots__/index.js.snap
+++ /dev/null
@@ -1,57 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`ProductPrice should apply the format if one is provided 1`] = `
-
- pre price
-
- Previous price:
-
-
- £1.00
-
-
- Discounted price:
-
-
- £0.50
-
- Test format
-
-`;
-
-exports[`ProductPrice should use default price if no format is provided 1`] = `
-
-
- Previous price:
-
-
- £1.00
-
-
- Discounted price:
-
-
- £0.50
-
-
-`;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/index.js
deleted file mode 100644
index 7a75da69..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-price/test/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer from 'react-test-renderer';
-
-/**
- * Internal dependencies
- */
-import ProductPrice from '../index';
-
-describe( 'ProductPrice', () => {
- const currency = {
- code: 'GBP',
- currency_code: 'GBP',
- currency_decimal_separator: '.',
- currency_minor_unit: 2,
- currency_prefix: '£',
- currency_suffix: '',
- currency_symbol: '£',
- currency_thousand_separator: ',',
- decimalSeparator: '.',
- minorUnit: 2,
- prefix: '£',
- price: '61400',
- price_range: null,
- raw_prices: {
- precision: 6,
- price: '614000000',
- regular_price: '614000000',
- sale_price: '614000000',
- },
- regular_price: '61400',
- sale_price: '61400',
- suffix: '',
- symbol: '£',
- thousandSeparator: ',',
- };
-
- test( 'should use default price if no format is provided', () => {
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-
- test( 'should apply the format if one is provided', () => {
- const component = TestRenderer.create(
-
- );
-
- expect( component.toJSON() ).toMatchSnapshot();
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/index.tsx
deleted file mode 100644
index 5b9bd6a9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/index.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * External dependencies
- */
-import classNames from 'classnames';
-import { __, sprintf } from '@wordpress/i18n';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-const Rating = ( {
- className,
- rating,
- ratedProductsCount,
-}: RatingProps ): JSX.Element => {
- const ratingClassName = classNames(
- 'wc-block-components-product-rating',
- className
- );
-
- const starStyle = {
- width: ( rating / 5 ) * 100 + '%',
- };
-
- const ratingText = sprintf(
- /* translators: %f is referring to the average rating value */
- __( 'Rated %f out of 5', 'woo-gutenberg-products-block' ),
- rating
- );
-
- const ratingHTML = {
- __html: sprintf(
- /* translators: %s is the rating value wrapped in HTML strong tags. */
- __( 'Rated %s out of 5', 'woo-gutenberg-products-block' ),
- sprintf( '%f ', rating )
- ),
- };
-
- return (
-
-
-
-
- { ratedProductsCount !== null ? (
-
- ({ ratedProductsCount })
-
- ) : null }
-
- );
-};
-
-export type RatingValues = 0 | 1 | 2 | 3 | 4 | 5;
-interface RatingProps {
- className?: string;
- rating: RatingValues;
- ratedProductsCount?: number | null;
-}
-
-export default Rating;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/style.scss
deleted file mode 100644
index 384d9b63..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/product-rating/style.scss
+++ /dev/null
@@ -1,121 +0,0 @@
-$line-height: 1.618;
-
-.wc-block-components-product-rating {
- display: block;
-
- span {
- line-height: $line-height;
- }
-
- &__stars {
- display: inline-block;
- overflow: hidden;
- position: relative;
- width: 5.3em;
- height: 1.618em;
- line-height: $line-height;
- font-size: 1em;
- /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */
- font-family: star;
- font-weight: 400;
-
- &.wc-block-grid__product-rating__stars {
- margin: 0;
- }
-
- &::before {
- content: "\53\53\53\53\53";
- line-height: $line-height;
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- opacity: 0.5;
- color: inherit;
- white-space: nowrap;
- }
- span {
- overflow: hidden;
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- color: inherit;
- padding-top: 1.5em;
- }
- span::before {
- content: "\53\53\53\53\53";
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- color: inherit;
- line-height: $line-height;
- white-space: nowrap;
- }
- }
-
- .wc-block-all-products & {
- margin-top: 0;
- margin-bottom: $gap-small;
- }
-
- &__container {
- > * {
- vertical-align: middle;
- }
- }
-
- &__stars + &__reviews_count {
- margin-left: $gap-smaller;
- }
-
- &__norating-container {
- display: inline-flex;
- flex-direction: row;
- align-items: center;
- gap: $gap-smaller;
- }
-
- &__norating {
- display: inline-block;
- overflow: hidden;
- position: relative;
- width: 1.5em;
- height: 1.618em;
- line-height: $line-height;
- font-size: 1em;
- /* stylelint-disable-next-line font-family-no-missing-generic-family-keyword */
- font-family: star;
- font-weight: 400;
- -webkit-text-stroke: 2px var(--wp--preset--color--black, #000);
- &::before {
- content: "\53";
- top: 0;
- left: 0;
- right: 0;
- position: absolute;
- color: transparent;
- white-space: nowrap;
- text-align: center;
- }
- }
-}
-
-.wc-block-all-products,
-.wp-block-query {
- .is-loading {
- .wc-block-components-product-rating {
- @include placeholder();
- width: 7em;
- }
- }
-
- .wc-block-components-product-rating__container {
- display: block;
- }
-
- .wc-block-components-product-rating__stars.wc-block-grid__product-rating__stars {
- margin: inherit;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/index.tsx
deleted file mode 100644
index e1a9b1c0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/index.tsx
+++ /dev/null
@@ -1,257 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import { speak } from '@wordpress/a11y';
-import classNames from 'classnames';
-import { useCallback, useLayoutEffect, useRef } from '@wordpress/element';
-import { DOWN, UP } from '@wordpress/keycodes';
-import { useDebouncedCallback } from 'use-debounce';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface QuantitySelectorProps {
- /**
- * Component wrapper classname
- *
- * @default 'wc-block-components-quantity-selector'
- */
- className?: string;
- /**
- * Current quantity
- */
- quantity?: number;
- /**
- * Minimum quantity
- */
- minimum?: number;
- /**
- * Maximum quantity
- */
- maximum: number;
- /**
- * Input step attribute.
- */
- step?: number;
- /**
- * Event handler triggered when the quantity is changed
- */
- onChange: ( newQuantity: number ) => void;
- /**
- * Name of the item the quantity selector refers to
- *
- * Used for a11y purposes
- */
- itemName?: string;
- /**
- * Whether the component should be interactable or not
- */
- disabled: boolean;
-}
-
-const QuantitySelector = ( {
- className,
- quantity = 1,
- minimum = 1,
- maximum,
- onChange = () => void 0,
- step = 1,
- itemName = '',
- disabled,
-}: QuantitySelectorProps ): JSX.Element => {
- const classes = classNames(
- 'wc-block-components-quantity-selector',
- className
- );
-
- const inputRef = useRef< HTMLInputElement | null >( null );
- const decreaseButtonRef = useRef< HTMLButtonElement | null >( null );
- const increaseButtonRef = useRef< HTMLButtonElement | null >( null );
- const hasMaximum = typeof maximum !== 'undefined';
- const canDecrease = ! disabled && quantity - step >= minimum;
- const canIncrease =
- ! disabled && ( ! hasMaximum || quantity + step <= maximum );
-
- /**
- * The goal of this function is to normalize what was inserted,
- * but after the customer has stopped typing.
- */
- const normalizeQuantity = useCallback(
- ( initialValue: number ) => {
- // We copy the starting value.
- let value = initialValue;
-
- // We check if we have a maximum value, and select the lowest between what was inserted and the maximum.
- if ( hasMaximum ) {
- value = Math.min(
- value,
- // the maximum possible value in step increments.
- Math.floor( maximum / step ) * step
- );
- }
-
- // Select the biggest between what's inserted, the the minimum value in steps.
- value = Math.max( value, Math.ceil( minimum / step ) * step );
-
- // We round off the value to our steps.
- value = Math.floor( value / step ) * step;
-
- // Only commit if the value has changed
- if ( value !== initialValue ) {
- onChange( value );
- }
- },
- [ hasMaximum, maximum, minimum, onChange, step ]
- );
-
- /*
- * It's important to wait before normalizing or we end up with
- * a frustrating experience, for example, if the minimum is 2 and
- * the customer is trying to type "10", premature normalizing would
- * always kick in at "1" and turn that into 2.
- */
- const debouncedNormalizeQuantity = useDebouncedCallback(
- normalizeQuantity,
- // This value is deliberately smaller than what's in useStoreCartItemQuantity so we don't end up with two requests.
- 300
- );
-
- /**
- * Normalize qty on mount before render.
- */
- useLayoutEffect( () => {
- normalizeQuantity( quantity );
- }, [ quantity, normalizeQuantity ] );
-
- /**
- * Handles keyboard up and down keys to change quantity value.
- *
- * @param {Object} event event data.
- */
- const quantityInputOnKeyDown = useCallback(
- ( event ) => {
- const isArrowDown =
- typeof event.key !== undefined
- ? event.key === 'ArrowDown'
- : event.keyCode === DOWN;
- const isArrowUp =
- typeof event.key !== undefined
- ? event.key === 'ArrowUp'
- : event.keyCode === UP;
-
- if ( isArrowDown && canDecrease ) {
- event.preventDefault();
- onChange( quantity - step );
- }
-
- if ( isArrowUp && canIncrease ) {
- event.preventDefault();
- onChange( quantity + step );
- }
- },
- [ quantity, onChange, canIncrease, canDecrease, step ]
- );
-
- return (
-
- {
- // Inputs values are strings, we parse them here.
- let value = parseInt( event.target.value, 10 );
- // parseInt would throw NaN for anything not a number,
- // so we revert value to the quantity value.
- value = isNaN( value ) ? quantity : value;
-
- if ( value !== quantity ) {
- // we commit this value immediately.
- onChange( value );
- // but once the customer has stopped typing, we make sure his value is respecting the bounds (maximum value, minimum value, step value), and commit the normalized value.
- debouncedNormalizeQuantity( value );
- }
- } }
- aria-label={ sprintf(
- /* translators: %s refers to the item name in the cart. */
- __(
- 'Quantity of %s in your cart.',
- 'woo-gutenberg-products-block'
- ),
- itemName
- ) }
- />
- {
- const newQuantity = quantity - step;
- onChange( newQuantity );
- speak(
- sprintf(
- /* translators: %s refers to the item's new quantity in the cart. */
- __(
- 'Quantity reduced to %s.',
- 'woo-gutenberg-products-block'
- ),
- newQuantity
- )
- );
- normalizeQuantity( newQuantity );
- } }
- >
- -
-
- {
- const newQuantity = quantity + step;
- onChange( newQuantity );
- speak(
- sprintf(
- /* translators: %s refers to the item's new quantity in the cart. */
- __(
- 'Quantity increased to %s.',
- 'woo-gutenberg-products-block'
- ),
- newQuantity
- )
- );
- normalizeQuantity( newQuantity );
- } }
- >
- +
-
-
- );
-};
-
-export default QuantitySelector;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/stories/index.stories.tsx
deleted file mode 100644
index 321c8404..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/stories/index.stories.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * External dependencies
- */
-import { useArgs } from '@storybook/client-api';
-import type { Story, Meta } from '@storybook/react';
-
-/**
- * Internal dependencies
- */
-import QuantitySelector, { QuantitySelectorProps } from '..';
-
-export default {
- title: 'Base Components/QuantitySelector',
- component: QuantitySelector,
- args: {
- itemName: 'widgets',
- quantity: 1,
- },
-} as Meta< QuantitySelectorProps >;
-
-const Template: Story< QuantitySelectorProps > = ( args ) => {
- const [ {}, setArgs ] = useArgs();
-
- const onChange = ( newVal: number ) => {
- args.onChange?.( newVal );
- setArgs( { quantity: newVal } );
- };
-
- return ;
-};
-
-export const Default = Template.bind( {} );
-Default.args = {};
-
-export const Disabled = Template.bind( {} );
-Disabled.args = {
- disabled: true,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/style.scss
deleted file mode 100644
index e3f488b4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/quantity-selector/style.scss
+++ /dev/null
@@ -1,109 +0,0 @@
-@mixin reset-button {
- border: 0;
- padding: 0;
- margin: 0;
- background: none transparent;
- box-shadow: none;
-
- &:focus {
- box-shadow: inset 0 0 1px 1px currentColor;
- outline: none;
- }
-}
-
-.wc-block-components-quantity-selector {
- border-radius: $universal-border-radius;
- // needed so that buttons fill the container.
- box-sizing: content-box;
- display: flex;
- margin: 0 0 0.25em 0;
- position: relative;
- width: 107px;
-
- &::after {
- border-radius: $universal-border-radius;
- border: 1px solid currentColor;
- bottom: 0;
- content: "";
- left: 0;
- opacity: 0.45;
- pointer-events: none;
- position: absolute;
- right: 0;
- top: 0;
- }
-
- // Extra label for specificity needed in the editor.
- input.wc-block-components-quantity-selector__input {
- @include font-size(regular);
- appearance: textfield;
- background: transparent;
- border: 0;
- box-shadow: none;
- color: currentColor;
- flex: 1 1 auto;
- font-weight: 600;
- line-height: 1;
- margin: 0;
- min-width: 40px;
- order: 2;
- padding: 0.4em 0;
- text-align: center;
- vertical-align: middle;
-
- &:focus {
- box-shadow: inset 0 0 1px 1px currentColor;
- outline: none;
- }
- &:disabled {
- opacity: 0.6;
- }
- }
- input::-webkit-outer-spin-button,
- input::-webkit-inner-spin-button {
- -webkit-appearance: none;
- margin: 0;
- }
-
- .wc-block-components-quantity-selector__button {
- @include reset-button;
- @include font-size(regular, 0.9em);
- color: currentColor;
- cursor: pointer;
- font-style: normal;
- font-weight: normal;
- min-width: 30px;
- opacity: 0.6;
- text-align: center;
- text-decoration: none;
-
- &:hover,
- &:focus {
- opacity: 1;
- }
- &:disabled {
- box-shadow: none;
- cursor: default;
- opacity: 0.6;
- }
- }
-
- > .wc-block-components-quantity-selector__button--minus {
- border-radius: $universal-border-radius 0 0 $universal-border-radius;
- order: 1;
- }
-
- > .wc-block-components-quantity-selector__button--plus {
- border-radius: 0 $universal-border-radius $universal-border-radius 0;
- order: 3;
- }
-}
-
-.theme-twentyseventeen {
- .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button {
- &:hover,
- &:focus {
- background: none transparent;
- }
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/index.tsx
deleted file mode 100644
index 6ca84ded..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/index.tsx
+++ /dev/null
@@ -1,247 +0,0 @@
-/**
- * External dependencies
- */
-import { createRef, Component } from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import type { MouseEvent, RefObject, ReactNode } from 'react';
-
-/**
- * Internal dependencies
- */
-import { clampLines } from './utils';
-
-export interface ReadMoreProps {
- /**
- * The entire content to clamp
- */
- children: ReactNode;
- /**
- * Class names for the wrapped component
- */
- className: string;
- /**
- * What symbol to show after the allowed lines are reached
- *
- * @default '&hellip';
- */
- ellipsis: string;
- /**
- * The string to show to collapse the entire text into its clamped form
- *
- * @default 'Read less'
- */
- lessText: string;
- /**
- * How many lines to show before the text is clamped
- *
- * @default 3
- */
- maxLines: number;
- /**
- * The string to show to expande the entire text
- *
- * @default 'Read more'
- */
- moreText: string;
-}
-
-interface ReadMoreState {
- /**
- * This is true when read more has been pressed and the full review is shown.
- */
- isExpanded: boolean;
- /**
- * True if we are clamping content. False if the review is short. Null during init.
- */
- clampEnabled: boolean | null;
- /**
- * Content is passed in via children.
- */
- content: ReactNode;
- /**
- * Summary content generated from content HTML.
- */
- summary: string;
-}
-
-export const defaultProps = {
- className: 'read-more-content',
- ellipsis: '…',
- lessText: __( 'Read less', 'woo-gutenberg-products-block' ),
- maxLines: 3,
- moreText: __( 'Read more', 'woo-gutenberg-products-block' ),
-};
-
-/**
- * Show text based content, limited to a number of lines, with a read more link.
- *
- * Based on https://github.com/zoltantothcom/react-clamp-lines.
- */
-class ReadMore extends Component< ReadMoreProps, ReadMoreState > {
- static defaultProps = defaultProps;
-
- private reviewSummary: RefObject< HTMLDivElement >;
- private reviewContent: RefObject< HTMLDivElement >;
-
- constructor( props: ReadMoreProps ) {
- super( props );
-
- this.state = {
- /**
- * This is true when read more has been pressed and the full review is shown.
- */
- isExpanded: false,
- /**
- * True if we are clamping content. False if the review is short. Null during init.
- */
- clampEnabled: null,
- /**
- * Content is passed in via children.
- */
- content: props.children,
- /**
- * Summary content generated from content HTML.
- */
- summary: '.',
- };
-
- this.reviewContent = createRef< HTMLDivElement >();
- this.reviewSummary = createRef< HTMLDivElement >();
- this.getButton = this.getButton.bind( this );
- this.onClick = this.onClick.bind( this );
- }
-
- componentDidMount(): void {
- this.setSummary();
- }
-
- componentDidUpdate( prevProps: ReadMoreProps ): void {
- if (
- prevProps.maxLines !== this.props.maxLines ||
- prevProps.children !== this.props.children
- ) {
- /**
- * if maxLines or content changed we need to reset the state to
- * initial values so that summary can be calculated again
- */
- this.setState(
- {
- clampEnabled: null,
- summary: '.',
- },
- this.setSummary
- );
- }
- }
-
- setSummary(): void {
- if ( this.props.children ) {
- const { maxLines, ellipsis } = this.props;
-
- if (
- ! this.reviewSummary.current ||
- ! this.reviewContent.current
- ) {
- return;
- }
-
- const lineHeight = this.reviewSummary.current.clientHeight + 1;
- const reviewHeight = this.reviewContent.current.clientHeight + 1;
- const maxHeight = lineHeight * maxLines + 1;
- const clampEnabled = reviewHeight > maxHeight;
-
- this.setState( {
- clampEnabled,
- } );
-
- if ( clampEnabled ) {
- this.setState( {
- summary: clampLines(
- this.reviewContent.current.innerHTML,
- this.reviewSummary.current,
- maxHeight,
- ellipsis
- ),
- } );
- }
- }
- }
-
- getButton(): JSX.Element | undefined {
- const { isExpanded } = this.state;
- const { className, lessText, moreText } = this.props;
-
- const buttonText = isExpanded ? lessText : moreText;
-
- if ( ! buttonText ) {
- return;
- }
-
- return (
-
- { buttonText }
-
- );
- }
-
- /**
- * Handles the click event for the read more/less button.
- */
- onClick( e: MouseEvent< HTMLAnchorElement, MouseEvent > ): void {
- e.preventDefault();
-
- const { isExpanded } = this.state;
-
- this.setState( {
- isExpanded: ! isExpanded,
- } );
- }
-
- render(): JSX.Element | null {
- const { className } = this.props;
- const { content, summary, clampEnabled, isExpanded } = this.state;
-
- if ( ! content ) {
- return null;
- }
-
- if ( clampEnabled === false ) {
- return (
-
- );
- }
-
- return (
-
- { ( ! isExpanded || clampEnabled === null ) && (
-
- ) }
- { ( isExpanded || clampEnabled === null ) && (
-
- { content }
-
- ) }
- { this.getButton() }
-
- );
- }
-}
-
-export default ReadMore;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/stories/index.stories.tsx
deleted file mode 100644
index c283dc56..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/stories/index.stories.tsx
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-
-/**
- * Internal dependencies
- */
-import ReadMore, { defaultProps, ReadMoreProps } from '..';
-
-export default {
- title: 'Base Components/ReadMore',
- component: ReadMore,
- args: defaultProps,
- argTypes: {
- children: { control: { disable: true } },
- },
-} as Meta< ReadMoreProps >;
-
-const LongText = (
- <>
-
- No! Alderaan is peaceful. We have no weapons. You can't
- possibly…
-
-
- As you wish. But with the blast shield down, I can't even see!
- How am I supposed to fight? Look, I ain't in this for your
- revolution, and I'm not in it for you, Princess. I expect to be
- well paid. I'm in it for the money.
-
-
- You mean it controls your actions?
-
- { ' ' }
- She must have hidden the plans in the escape pod.
- { ' ' }
-
- Send a detachment down to retrieve them, and see to it
- personally, Commander.
-
- There'll be no one to stop us this time!
-
- Escape is not his plan. I must face him, alone.
-
- Partially, but it also obeys your commands.
-
- Leave that to me. Send a distress signal, and inform the Senate
- that all on board were killed.
-
-
- A tremor in the Force. The last time I felt it was in the
- presence of my old master.
-
-
-
- >
-);
-
-const Template: Story< ReadMoreProps > = ( args ) => ;
-
-export const Default = Template.bind( {} );
-Default.args = {
- children: LongText,
- maxLines: 6,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/test/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/test/index.ts
deleted file mode 100644
index 96e047a1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/test/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Internal dependencies
- */
-import { truncateHtml } from '../utils';
-const shortContent =
- 'Lorem ipsum dolor sit amet, consectetur. .
';
-
-const longContent =
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam a condimentum diam. Donec finibus enim eros, et lobortis magna varius quis. Nulla lacinia tellus ac neque aliquet, in porttitor metus interdum. Maecenas vestibulum nisi et auctor vestibulum. Maecenas vehicula, lacus et pellentesque tempor, orci nulla mattis purus, id porttitor augue magna et metus. Aenean hendrerit aliquet massa ac convallis. Mauris vestibulum neque in condimentum porttitor. Donec viverra, orci a accumsan vehicula, dui massa lobortis lorem, et cursus est purus pulvinar elit. Vestibulum vitae tincidunt ex, ut vulputate nisi.
' +
- 'Morbi tristique iaculis felis, sed porta urna tincidunt vitae. Etiam nisl sem, eleifend non varius quis, placerat a arcu. Donec consectetur nunc at orci fringilla pulvinar. Nam hendrerit tellus in est aliquet varius id in diam. Donec eu ullamcorper ante. Ut ultricies, felis vel sodales aliquet, nibh massa vestibulum ipsum, sed dignissim mi nunc eget lacus. Curabitur mattis placerat magna a aliquam. Nullam diam elit, cursus nec erat ullamcorper, tempor eleifend mauris. Nunc placerat nunc ut enim ornare tempus. Fusce porta molestie ante eget faucibus. Fusce eu lectus sit amet diam auctor lacinia et in diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris eu lacus lobortis, faucibus est vel, pulvinar odio. Duis feugiat tortor quis dui euismod varius.
';
-
-describe( 'ReadMore Component', () => {
- describe( 'Test the truncateHtml function', () => {
- it( 'Truncate long HTML content to length of 10', () => {
- const truncatedContent = truncateHtml( longContent, 10 );
-
- expect( truncatedContent ).toEqual( 'Lorem ipsum...
' );
- } );
- it( 'Truncate long HTML content, but avoid cutting off HTML tags.', () => {
- const truncatedContent = truncateHtml( longContent, 40 );
-
- expect( truncatedContent ).toEqual(
- 'Lorem ipsum dolor sit amet, consectetur...
'
- );
- } );
- it( 'No need to truncate short HTML content.', () => {
- const truncatedContent = truncateHtml( shortContent, 100 );
-
- expect( truncatedContent ).toEqual(
- 'Lorem ipsum dolor sit amet, consectetur. .
'
- );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/trim-html.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/trim-html.js
deleted file mode 100644
index 3adb9f2b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/trim-html.js
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copy-pasted from https://github.com/brankosekulic/trimHtml/blob/master/index.js
-// the published npm version of this code contains a bug that causes it throw exceptions.
-export function trimHtml( html, options ) {
- options = options || {};
-
- const limit = options.limit || 100,
- preserveTags =
- typeof options.preserveTags !== 'undefined'
- ? options.preserveTags
- : true,
- wordBreak =
- typeof options.wordBreak !== 'undefined'
- ? options.wordBreak
- : false,
- suffix = options.suffix || '...',
- moreLink = options.moreLink || '',
- moreText = options.moreText || '»',
- preserveWhiteSpace = options.preserveWhiteSpace || false;
-
- const arr = html
- .replace( //g, '>\n' )
- .replace( /\n\n/g, '\n' )
- .replace( /^\n/g, '' )
- .replace( /\n$/g, '' )
- .split( '\n' );
-
- let sum = 0,
- row,
- cut,
- add,
- rowCut,
- tagMatch,
- tagName,
- // eslint-disable-next-line prefer-const
- tagStack = [],
- more = false;
-
- for ( let i = 0; i < arr.length; i++ ) {
- row = arr[ i ];
-
- // count multiple spaces as one character
- if ( ! preserveWhiteSpace ) {
- rowCut = row.replace( /[ ]+/g, ' ' );
- } else {
- rowCut = row;
- }
-
- if ( ! row.length ) {
- continue;
- }
-
- const charArr = getCharArr( rowCut );
-
- if ( row[ 0 ] !== '<' ) {
- if ( sum >= limit ) {
- row = '';
- } else if ( sum + charArr.length >= limit ) {
- cut = limit - sum;
-
- if ( charArr[ cut - 1 ] === ' ' ) {
- while ( cut ) {
- cut -= 1;
- if ( charArr[ cut - 1 ] !== ' ' ) {
- break;
- }
- }
- } else {
- add = charArr.slice( cut ).indexOf( ' ' );
-
- // break on halh of word
- if ( ! wordBreak ) {
- if ( add !== -1 ) {
- cut += add;
- } else {
- cut = row.length;
- }
- }
- }
-
- row = charArr.slice( 0, cut ).join( '' ) + suffix;
-
- if ( moreLink ) {
- row +=
- '' +
- moreText +
- ' ';
- }
-
- sum = limit;
- more = true;
- } else {
- sum += charArr.length;
- }
- } else if ( ! preserveTags ) {
- row = '';
- } else if ( sum >= limit ) {
- tagMatch = row.match( /[a-zA-Z]+/ );
- tagName = tagMatch ? tagMatch[ 0 ] : '';
-
- if ( tagName ) {
- if ( row.substring( 0, 2 ) !== '' ) {
- tagStack.push( tagName );
- row = '';
- } else {
- while (
- tagStack[ tagStack.length - 1 ] !== tagName &&
- tagStack.length
- ) {
- tagStack.pop();
- }
-
- if ( tagStack.length ) {
- row = '';
- }
-
- tagStack.pop();
- }
- } else {
- row = '';
- }
- }
-
- arr[ i ] = row;
- }
-
- return {
- html: arr.join( '\n' ).replace( /\n/g, '' ),
- more,
- };
-}
-
-// count symbols like one char
-function getCharArr( rowCut ) {
- // eslint-disable-next-line prefer-const
- let charArr = [],
- subRow,
- match,
- char;
-
- for ( let i = 0; i < rowCut.length; i++ ) {
- subRow = rowCut.substring( i );
- match = subRow.match( /^&[a-z0-9#]+;/ );
-
- if ( match ) {
- char = match[ 0 ];
- charArr.push( char );
- i += char.length - 1;
- } else {
- charArr.push( rowCut[ i ] );
- }
- }
-
- return charArr;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/utils.ts
deleted file mode 100644
index 6f5cbe82..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/read-more/utils.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * Internal dependencies
- */
-import { trimHtml } from './trim-html';
-
-/**
- * External dependencies
- */
-type Markers = {
- end: number;
- middle: number;
- start: number;
-};
-
-/**
- * Truncate some HTML content to a given length.
- *
- * @param {string} html HTML that will be truncated.
- * @param {number} length Length to truncate the string to.
- * @param {string} ellipsis Character to append to truncated content.
- */
-export const truncateHtml = (
- html: string,
- length: number,
- ellipsis = '...'
-): string => {
- const trimmed = trimHtml( html, {
- suffix: ellipsis,
- limit: length,
- } );
-
- return trimmed.html;
-};
-
-/**
- * Move string markers. Used by calculateLength.
- *
- * @param {Markers} markers Markers for clamped content.
- * @param {number} currentHeight Current height of clamped content.
- * @param {number} maxHeight Max height of the clamped content.
- */
-const moveMarkers = (
- markers: Markers,
- currentHeight: number,
- maxHeight: number
-): Markers => {
- if ( currentHeight <= maxHeight ) {
- markers.start = markers.middle + 1;
- } else {
- markers.end = markers.middle - 1;
- }
-
- return markers;
-};
-
-/**
- * Calculate how long the content can be based on the maximum number of lines allowed, and client height.
- *
- * @param {string} originalContent Content to be clamped.
- * @param {HTMLElement} targetElement Element which will contain the clamped content.
- * @param {number} maxHeight Max height of the clamped content.
- */
-const calculateLength = (
- originalContent: string,
- targetElement: HTMLElement,
- maxHeight: number
-): number => {
- let markers: Markers = {
- start: 0,
- middle: 0,
- end: originalContent.length,
- };
-
- while ( markers.start <= markers.end ) {
- markers.middle = Math.floor( ( markers.start + markers.end ) / 2 );
-
- // We set the innerHTML directly in the DOM here so we can reliably check the clientHeight later in moveMarkers.
- targetElement.innerHTML = truncateHtml(
- originalContent,
- markers.middle
- );
-
- markers = moveMarkers( markers, targetElement.clientHeight, maxHeight );
- }
-
- return markers.middle;
-};
-
-/**
- * Clamp lines calculates the height of a line of text and then limits it to the
- * value of the lines prop. Content is updated once limited.
- *
- * @param {string} originalContent Content to be clamped.
- * @param {HTMLElement} targetElement Element which will contain the clamped content.
- * @param {number} maxHeight Max height of the clamped content.
- * @param {string} ellipsis Character to append to clamped content.
- * @return {string} clamped content
- */
-export const clampLines = (
- originalContent: string,
- targetElement: HTMLElement,
- maxHeight: number,
- ellipsis: string
-): string => {
- const length = calculateLength( originalContent, targetElement, maxHeight );
-
- return truncateHtml( originalContent, length - ellipsis.length, ellipsis );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/index.js
deleted file mode 100644
index 0aaa93a8..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export { default as ReviewList } from './review-list/';
-export { default as ReviewListItem } from './review-list-item/';
-export { default as ReviewSortSelect } from './review-sort-select/';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/index.tsx
deleted file mode 100644
index 022dd5df..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/index.tsx
+++ /dev/null
@@ -1,226 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import classNames from 'classnames';
-import ReadMore from '@woocommerce/base-components/read-more';
-import { ReviewBlockAttributes } from '@woocommerce/blocks/reviews/attributes';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import type { Review } from '../types';
-
-function getReviewImage(
- review: Review,
- imageType: string,
- isLoading: boolean
-): JSX.Element {
- if ( isLoading || ! review ) {
- return (
-
- );
- }
-
- return (
-
- { imageType === 'product' ? (
-
- ) : (
- // The alt text is left empty on purpose, as it's considered a decorative image.
- // More can be found here: https://www.w3.org/WAI/tutorials/images/decorative/.
- // Github discussion for a context: https://github.com/woocommerce/woocommerce-blocks/pull/7651#discussion_r1019560494.
-
- ) }
- { review.verified && (
-
- { __( 'Verified buyer', 'woo-gutenberg-products-block' ) }
-
- ) }
-
- );
-}
-
-function getReviewContent( review: Review ): JSX.Element {
- return (
-
-
-
- );
-}
-
-function getReviewProductName( review: Review ): JSX.Element {
- return (
-
- );
-}
-
-function getReviewerName( review: Review ): JSX.Element {
- const { reviewer = '' } = review;
- return (
-
- { reviewer }
-
- );
-}
-
-function getReviewDate( review: Review ): JSX.Element {
- const {
- date_created: dateCreated,
- formatted_date_created: formattedDateCreated,
- } = review;
- return (
-
- { formattedDateCreated }
-
- );
-}
-
-function getReviewRating( review: Review ): JSX.Element {
- const { rating } = review;
- const starStyle = {
- width: ( rating / 5 ) * 100 + '%' /* stylelint-disable-line */,
- };
- const ratingText = sprintf(
- /* translators: %f is referring to the average rating value */
- __( 'Rated %f out of 5', 'woo-gutenberg-products-block' ),
- rating
- );
- const ratingHTML = {
- __html: sprintf(
- /* translators: %s is referring to the average rating value */
- __( 'Rated %s out of 5', 'woo-gutenberg-products-block' ),
- sprintf( '%f ', rating )
- ),
- };
- return (
-
- );
-}
-
-interface ReviewListItemProps {
- attributes: ReviewBlockAttributes;
- review?: Review;
-}
-
-const ReviewListItem = ( { attributes, review = {} }: ReviewListItemProps ) => {
- const {
- imageType,
- showReviewDate,
- showReviewerName,
- showReviewImage,
- showReviewRating: showReviewRatingAttr,
- showReviewContent,
- showProductName,
- } = attributes;
- const { rating } = review;
- const isLoading = ! ( Object.keys( review ).length > 0 );
- const showReviewRating = Number.isFinite( rating ) && showReviewRatingAttr;
-
- return (
-
- { ( showProductName ||
- showReviewDate ||
- showReviewerName ||
- showReviewImage ||
- showReviewRating ) && (
-
- { showReviewImage &&
- getReviewImage( review, imageType, isLoading ) }
- { ( showProductName ||
- showReviewerName ||
- showReviewRating ||
- showReviewDate ) && (
-
- { showReviewRating && getReviewRating( review ) }
- { showProductName &&
- getReviewProductName( review ) }
- { showReviewerName && getReviewerName( review ) }
- { showReviewDate && getReviewDate( review ) }
-
- ) }
-
- ) }
- { showReviewContent && getReviewContent( review ) }
-
- );
-};
-
-/**
- * BE AWARE. ReviewListItem expects product data that is equivalent to what is
- * made available for output in a public view. Thus content that may contain
- * html data is not sanitized further.
- *
- * Currently the following data is trusted (assumed to already be sanitized):
- * - `review.review` (review content)
- * - `review.product_name` (the product title)
- */
-export default ReviewListItem;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/style.scss
deleted file mode 100644
index 4692a198..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list-item/style.scss
+++ /dev/null
@@ -1,212 +0,0 @@
-.is-loading {
- .wc-block-components-review-list-item__text {
- @include placeholder();
- @include force-content();
- display: block;
- width: 60%;
- }
-
- .wc-block-components-review-list-item__info {
- .wc-block-components-review-list-item__image {
- @include placeholder();
- @include force-content();
- }
-
- .wc-block-components-review-list-item__meta {
- .wc-block-components-review-list-item__author {
- @include placeholder();
- @include font-size(regular);
- @include force-content();
- width: 80px;
- }
-
- .wc-block-components-review-list-item__product {
- display: none;
- }
-
- .wc-block-components-review-list-item__rating {
- .wc-block-components-review-list-item__rating__stars > span {
- display: none;
- }
- }
- }
-
- .wc-block-components-review-list-item__published-date {
- @include placeholder();
- @include force-content();
- height: 1em;
- width: 120px;
- }
- }
-}
-
-.editor-styles-wrapper .wc-block-components-review-list-item__item,
-.wc-block-components-review-list-item__item {
- margin: 0 0 $gap-large * 2;
- list-style: none;
-}
-
-.wc-block-components-review-list-item__info {
- display: grid;
- grid-template-columns: 1fr;
- margin-bottom: $gap-large;
-}
-
-.wc-block-components-review-list-item__meta {
- grid-column: 1;
- grid-row: 1;
-}
-
-.wc-block-components-review-list-item__item--has-image {
- .wc-block-components-review-list-item__info {
- grid-template-columns: calc(3em + #{$gap}) 1fr;
- }
- .wc-block-components-review-list-item__meta {
- grid-column: 2;
- }
-}
-
-.wc-block-components-review-list-item__image {
- align-items: center;
- display: flex;
- height: 3em;
- grid-column: 1;
- grid-row: 1 / 3;
- justify-content: center;
- position: relative;
- width: 3em;
-
- > img {
- display: block;
- max-height: 100%;
- object-fit: contain;
- }
-}
-
-.wc-block-components-review-list-item__verified {
- width: 21px;
- height: 21px;
- text-indent: 21px;
- margin: 0;
- line-height: 21px;
- overflow: hidden;
- position: absolute;
- right: -7px;
- bottom: -7px;
-
- &::before {
- width: 21px;
- height: 21px;
- background: transparent url('data:image/svg+xml;utf8,%3Csvg xmlns="http://www.w3.org/2000/svg" width="21" height="21" fill="none"%3E%3Ccircle cx="10.5" cy="10.5" r="10.5" fill="%23fff"/%3E%3Cpath fill="%23008A21" fill-rule="evenodd" d="M2.1667 10.5003c0-4.6 3.7333-8.3333 8.3333-8.3333s8.3334 3.7333 8.3334 8.3333S15.1 18.8337 10.5 18.8337s-8.3333-3.7334-8.3333-8.3334zm2.5 0l4.1666 4.1667 7.5001-7.5-1.175-1.1833-6.325 6.325-2.9917-2.9834-1.175 1.175z" clip-rule="evenodd"/%3E%3Cmask id="a" width="17" height="17" x="2" y="2" maskUnits="userSpaceOnUse"%3E%3Cpath fill="%23fff" fill-rule="evenodd" d="M2.1667 10.5003c0-4.6 3.7333-8.3333 8.3333-8.3333s8.3334 3.7333 8.3334 8.3333S15.1 18.8337 10.5 18.8337s-8.3333-3.7334-8.3333-8.3334zm2.5 0l4.1666 4.1667 7.5001-7.5-1.175-1.1833-6.325 6.325-2.9917-2.9834-1.175 1.175z" clip-rule="evenodd"/%3E%3C/mask%3E%3Cg mask="url(%23a)"%3E%3Cpath fill="%23008A21" d="M.5.5h20v20H.5z"/%3E%3C/g%3E%3C/svg%3E') center center no-repeat; /* stylelint-disable-line */
- display: block;
- content: "";
- }
-}
-
-.wc-block-components-review-list-item__meta {
- display: flex;
- align-items: center;
- flex-flow: row wrap;
-
- &::after {
- // Force wrap after star rating.
- order: 3;
- content: "";
- flex-basis: 100%;
- }
-}
-
-.wc-block-components-review-list-item__product {
- display: block;
- font-weight: bold;
- order: 1;
- margin-right: $gap * 0.5;
-}
-
-.wc-block-components-review-list-item__author {
- display: block;
- font-weight: bold;
- order: 1;
- margin-right: $gap * 0.5;
-}
-
-.wc-block-components-review-list-item__product + .wc-block-components-review-list-item__author {
- font-weight: normal;
- order: 4;
-}
-
-.wc-block-components-review-list-item__published-date {
- order: 5;
-}
-
-.wc-block-components-review-list-item__product + .wc-block-components-review-list-item__author + .wc-block-components-review-list-item__published-date {
- padding-left: $gap * 0.5;
- position: relative;
-
- &::before {
- content: "";
- display: inline-block;
- margin-left: -$gap * 0.5;
- border-right: 1px solid currentColor;
- opacity: 0.5;
- height: 1em;
- vertical-align: middle;
- position: absolute;
- top: calc(50% + 0.1em);
- transform: translateY(-50%);
- }
-}
-
-.wc-block-components-review-list-item__author:first-child + .wc-block-components-review-list-item__published-date,
-.wc-block-components-review-list-item__rating + .wc-block-components-review-list-item__author + .wc-block-components-review-list-item__published-date {
- &::before {
- display: none;
- }
-}
-
-.wc-block-components-review-list-item__rating {
- order: 2;
-
- > .wc-block-components-review-list-item__rating__stars {
- @include font-size(regular);
- display: block;
- top: 0;
- overflow: hidden;
- position: relative;
- height: 1em;
- line-height: 1;
- width: 5.3em;
- font-family: star; /* stylelint-disable-line */
- font-weight: 400;
- }
-
- > .wc-block-components-review-list-item__rating__stars::before {
- content: "\53\53\53\53\53";
- opacity: 0.25;
- float: left;
- top: 0;
- left: 0;
- position: absolute;
- }
-
- > .wc-block-components-review-list-item__rating__stars span {
- overflow: hidden;
- float: left;
- top: 0;
- left: 0;
- position: absolute;
- padding-top: 1.5em;
- }
-
- > .wc-block-components-review-list-item__rating__stars span::before {
- content: "\53\53\53\53\53";
- top: 0;
- position: absolute;
- left: 0;
- color: #e6a237;
- }
-}
-
-.wc-block-components-review-list-item__text p {
- font-size: inherit;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/index.tsx
deleted file mode 100644
index 49c5fe56..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/index.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * External dependencies
- */
-import { getSetting } from '@woocommerce/settings';
-import { ReviewBlockAttributes } from '@woocommerce/blocks/reviews/attributes';
-
-/**
- * Internal dependencies
- */
-import ReviewListItem from '../review-list-item';
-import type { Review } from '../types';
-import './style.scss';
-interface ReviewListProps {
- attributes: ReviewBlockAttributes;
- reviews: Review[];
-}
-
-const ReviewList = ( {
- attributes,
- reviews,
-}: ReviewListProps ): JSX.Element => {
- const showAvatars = getSetting< boolean >( 'showAvatars', true );
- const reviewRatingsEnabled = getSetting< boolean >(
- 'reviewRatingsEnabled',
- true
- );
- const showReviewImage =
- ( showAvatars || attributes.imageType === 'product' ) &&
- attributes.showReviewImage;
- const showReviewRating =
- reviewRatingsEnabled && attributes.showReviewRating;
- const attrs = {
- ...attributes,
- showReviewImage,
- showReviewRating,
- };
-
- return (
-
- { reviews.length === 0 ? (
-
- ) : (
- reviews.map( ( review, i ) => (
-
- ) )
- ) }
-
- );
-};
-
-export default ReviewList;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/style.scss
deleted file mode 100644
index 0dba3848..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-list/style.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-// Duplicate class for specificity in the editor.
-.wc-block-components-review-list.wc-block-components-review-list {
- margin: 0;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/index.tsx
deleted file mode 100644
index e8cb9928..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/index.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { SortSelect } from '@woocommerce/blocks-components';
-import type { ChangeEventHandler } from 'react';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface ReviewSortSelectProps {
- onChange: ChangeEventHandler;
- readOnly?: boolean;
- value: 'most-recent' | 'highest-rating' | 'lowest-rating';
-}
-
-const ReviewSortSelect = ( {
- onChange,
- readOnly,
- value,
-}: ReviewSortSelectProps ): JSX.Element => {
- return (
-
- );
-};
-
-export default ReviewSortSelect;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/style.scss
deleted file mode 100644
index ed01f81a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/review-sort-select/style.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.wc-block-components-review-sort-select {
- text-align: right;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/types.ts
deleted file mode 100644
index 2a42c9bf..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/reviews/types.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * External dependencies
- */
-import { EmptyObjectType } from '@woocommerce/types';
-
-export type Review =
- | {
- date_created: string;
- date_created_gmt: string;
- formatted_date_created: string;
- product_name: string;
- product_permalink: string;
- review: string;
- reviewer: string;
- id: number;
- product_id: number;
- product_image: {
- alt: string;
- thumbnail: string;
- name: string;
- sizes: string;
- src: string;
- srcset: string;
- };
- reviewer_avatar_urls: { [ size: string ]: string };
- verified: boolean;
- rating: number;
- }
- | EmptyObjectType;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/index.js
deleted file mode 100644
index f8156227..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/index.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export { default as Sidebar } from './sidebar';
-export { default as Main } from './main';
-export { default as SidebarLayout } from './sidebar-layout';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/main.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/main.tsx
deleted file mode 100644
index d2e8d67b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/main.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * External dependencies
- */
-import { forwardRef } from '@wordpress/element';
-import classNames from 'classnames';
-
-/**
- * Internal dependencies
- */
-import { ForwardRefProps } from './types';
-
-const Main = forwardRef< HTMLInputElement, ForwardRefProps >(
- ( { children, className = '' }, ref ): JSX.Element => {
- return (
-
- { children }
-
- );
- }
-);
-
-export default Main;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar-layout.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar-layout.tsx
deleted file mode 100644
index 47ed2d60..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar-layout.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * External dependencies
- */
-import classNames from 'classnames';
-import { ContainerWidthContextProvider } from '@woocommerce/base-context';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-interface SidebarLayoutProps {
- children: JSX.Element | JSX.Element[];
- className: string;
-}
-
-const SidebarLayout = ( {
- children,
- className,
-}: SidebarLayoutProps ): JSX.Element => {
- return (
-
- { children }
-
- );
-};
-
-export default SidebarLayout;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar.tsx
deleted file mode 100644
index 891cbe69..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/sidebar.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * External dependencies
- */
-import { forwardRef } from '@wordpress/element';
-import classNames from 'classnames';
-
-/**
- * Internal dependencies
- */
-import { ForwardRefProps } from './types';
-
-const Sidebar = forwardRef< HTMLInputElement, ForwardRefProps >(
- ( { children, className = '' }, ref ): JSX.Element => {
- return (
-
- { children }
-
- );
- }
-);
-
-export default Sidebar;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/style.scss
deleted file mode 100644
index bda62cc2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/style.scss
+++ /dev/null
@@ -1,78 +0,0 @@
-.wc-block-components-sidebar-layout {
- display: flex;
- flex-wrap: wrap;
- margin: 0 auto $gap;
- position: relative;
-
- .wc-block-must-login-prompt {
- display: block;
- }
-
- .wc-block-components-main {
- box-sizing: border-box;
- margin: 0;
- padding-right: math.percentage(math.div($gap-largest, 1060px)); // ~1060px is the default width of the content area in Storefront.
- width: 65%;
- }
-}
-
-.wc-block-components-sidebar {
- box-sizing: border-box;
- margin: 0;
- padding-left: math.percentage(math.div($gap-large, 1060px));
- width: 35%;
-
- .wc-block-components-panel > h2 {
- @include font-size(regular);
- @include reset-box();
- }
-}
-
-.is-medium,
-.is-small,
-.is-mobile {
- &.wc-block-components-sidebar-layout {
- flex-direction: column;
- margin: 0 auto $gap;
-
- .wc-block-components-main {
- padding: 0;
- width: 100%;
- }
- .wc-block-components-sidebar {
- padding: 0;
- width: 100%;
- }
- }
-}
-
-.is-large {
- .wc-block-components-sidebar {
- .wc-block-components-totals-item,
- .wc-block-components-panel,
- .wc-block-components-totals-coupon {
- padding-left: $gap;
- padding-right: $gap;
- }
- .wc-block-components-panel {
- .wc-block-components-totals-item {
- padding: 0;
- }
- }
- }
-}
-
-.wc-block-components-sidebar .wc-block-components-panel > h2 {
- @include reset-typography();
- .wc-block-components-panel__button {
- font-weight: 400;
- }
-}
-
-// For Twenty Twenty we need to increase specificity a bit more.
-.theme-twentytwenty {
- .wc-block-components-sidebar .wc-block-components-panel > h2 {
- @include font-size(large);
- @include reset-box();
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/types.ts
deleted file mode 100644
index 99cb8bbf..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/sidebar-layout/types.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export type ForwardRefProps = {
- children: JSX.Element | JSX.Element[];
- className?: string;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/index.tsx
deleted file mode 100644
index 58191761..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/index.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface SkeletonProps {
- numberOfLines?: number;
- tag?: keyof JSX.IntrinsicElements;
- maxWidth?: string;
-}
-
-export const Skeleton = ( {
- numberOfLines = 1,
- tag: Tag = 'div',
- maxWidth = '100%',
-}: SkeletonProps ): JSX.Element => {
- const skeletonLines = Array.from(
- { length: numberOfLines },
- ( _: undefined, index ) => (
-
- )
- );
- return (
-
- { skeletonLines }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/style.scss
deleted file mode 100644
index a19cfec0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/skeleton/style.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-.wc-block-components-skeleton {
- display: flex;
- flex-direction: column;
- gap: 1rem;
- width: 100%;
-
-}
-
-.wc-block-components-skeleton-text-line {
- height: 0.85em;
- width: 100%;
- position: relative;
- background: $universal-border-light;
- border-radius: $universal-border-radius;
-
- &:last-child {
- width: 80%;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/constants.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/constants.ts
deleted file mode 100644
index bdc1149a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/constants.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const SNACKBAR_TIMEOUT = 10000;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/docs/docs.mdx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/docs/docs.mdx
deleted file mode 100644
index b52bb45d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/docs/docs.mdx
+++ /dev/null
@@ -1,90 +0,0 @@
-import { Canvas, Meta, ArgTypes } from '@storybook/blocks';
-
-import * as SnackbarListStories from '../stories/index.stories.tsx';
-import * as SnackbarStories from '../stories/snackbar.stories.tsx';
-
-
-
-# SnackbarList
-
-A temporary informational UI element displayed at the bottom of store pages.
-
-
-
-## Design Guidelines
-
-The Snackbar is a temporary informational UI element displayed at the bottom of store pages. WooCommerce blocks, themes, and plugins all use snackbar notices to indicate the result of a successful action. For example, adding something to the cart.
-
-Snackbar notices work in the same way as the NoticeBanner component, and support the same statuses and styles.
-
-### Default Snackbars
-
-By default, notices are grey and used for less important messaging.
-
-
-
-### Informational Snackbars
-
-Blue notices with an info icon are used for general information for buyers, but do not require action.
-
-
-
-### Error Snackbars
-
-Red notices with an alert icon are used to show that an error has occurred and that the user needs to take action.
-
-
-
-### Success Snackbars
-
-Green notices with a success icon are used to show an action was successful.
-
-
-
-### Warning Snackbars
-
-Yellow notices with an alert icon are used to show that the user may need to take action, or needs to be aware of something important.
-
-
-
-## Development Guidelines
-
-The component consuming `SnackbarList` is responsible for managing the notices state. The `SnackbarList` component will automatically remove notices from the list when they are dismissed by the user using the provided `onRemove` callback, and also when the notice times out after 10000ms.
-
-### Props
-
-
-
-### NoticeType
-
-Each notice can be provided with the following args.
-
-- The `id` (required) prop is used to identify the notice and should be unique.
-- The `content` (required) prop is the content to display in the notice.
-- The `status` prop is used to determine the color of the notice and the icon. Acceptable values are 'success', 'error', 'info', 'warning', and 'default'.
-- The `isDismissible` prop determines whether the notice can be dismissed by the user.
-- The `spokenMessage` prop is used to change the spoken message for assistive technology. If not provided, the `content` prop will be used as the spoken message.
-
-### Usage example
-
-To display snackbar notices, pass an array of `notices` to the `SnackbarList` component:
-
-```jsx
-import { SnackbarList } from '@woocommerce/base-components';
-
-const notices = [
- {
- id: '1',
- content: 'This is a snackbar notice.',
- status: 'default',
- isDismissible: true,
- spokenMessage: "Hello snackbar!"
- }
-];
-
-;
-```
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/index.tsx
deleted file mode 100644
index af7e92e4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/index.tsx
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import type { NoticeType } from '@woocommerce/types';
-import { useReducedMotion } from '@wordpress/compose';
-import { useRef } from '@wordpress/element';
-import { CSSTransition, TransitionGroup } from 'react-transition-group';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-import Snackbar from './snackbar';
-
-export type SnackbarListProps = {
- // Class name to be added to the container.
- className?: string | undefined;
- // List of notices to be rendered.
- notices: NoticeType[];
- // Callback to be called when a notice is dismissed.
- onRemove: ( id: string ) => void;
-};
-
-/**
- * A temporary informational UI displayed at the bottom of store pages.
- */
-const SnackbarList = ( {
- notices,
- className,
- onRemove = () => void 0,
-}: SnackbarListProps ): JSX.Element => {
- const listRef = useRef< HTMLDivElement | null >( null );
- const isReducedMotion = useReducedMotion();
-
- const removeNotice = ( notice: NoticeType ) => () =>
- onRemove( notice?.id || '' );
-
- return (
-
- { isReducedMotion ? (
- notices.map( ( notice ) => {
- const { content, ...restNotice } = notice;
- return (
-
- { notice.content }
-
- );
- } )
- ) : (
-
- { notices.map( ( notice ) => {
- const { content, ...restNotice } = notice;
- return (
-
-
- { content }
-
-
- );
- } ) }
-
- ) }
-
- );
-};
-
-export default SnackbarList;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/snackbar.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/snackbar.tsx
deleted file mode 100644
index a4758e1e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/snackbar.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * External dependencies
- */
-import { useEffect } from '@wordpress/element';
-import classNames from 'classnames';
-
-/**
- * Internal dependencies
- */
-import NoticeBanner, { NoticeBannerProps } from '../notice-banner';
-import { SNACKBAR_TIMEOUT } from './constants';
-
-export interface SnackbarProps extends NoticeBannerProps {
- // A ref to the list that contains the snackbar.
- listRef?: React.MutableRefObject< HTMLDivElement | null >;
-}
-
-export const Snackbar = ( {
- onRemove = () => void 0,
- children,
- listRef,
- className,
- ...notice
-}: SnackbarProps ) => {
- // Only set up the timeout dismiss if we're not explicitly dismissing.
- useEffect( () => {
- const timeoutHandle = setTimeout( () => {
- onRemove();
- }, SNACKBAR_TIMEOUT );
-
- return () => clearTimeout( timeoutHandle );
- }, [ onRemove ] );
-
- return (
- {
- // Prevent focus loss by moving it to the list element.
- if ( listRef && listRef.current ) {
- listRef.current.focus();
- }
- onRemove();
- } }
- >
- { children }
-
- );
-};
-
-export default Snackbar;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/index.stories.tsx
deleted file mode 100644
index 73c4874e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/index.stories.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * External dependencies
- */
-import type { StoryFn, Meta } from '@storybook/react';
-
-/**
- * Internal dependencies
- */
-import SnackbarList, { SnackbarListProps } from '../';
-
-export default {
- title: 'Base Components/SnackbarList',
- args: {
- notices: [
- {
- id: '1',
- content: 'This is a snackbar notice.',
- status: 'success',
- isDismissible: true,
- },
- ],
- className: undefined,
- onRemove: () => void 0,
- },
- argTypes: {
- className: {
- description: 'Additional class name to give to the notice.',
- control: 'text',
- },
- notices: {
- description:
- 'A list of notices to display as snackbars. Each notice must have an `id` and `content` prop.',
- disable: true,
- },
- onRemove: {
- description:
- 'Function called when dismissing the notice. When the close icon is clicked or the Escape key is pressed, this function will be called. This is also called when the notice times out after 10000ms.',
- disable: true,
- },
- },
- component: SnackbarList,
-} as Meta< SnackbarListProps >;
-
-const Template: StoryFn< SnackbarListProps > = ( args ) => {
- return ;
-};
-
-export const Default = Template.bind( {} );
-Default.args = {
- notices: [
- {
- id: '1',
- content: 'This is a snackbar notice.',
- status: 'default',
- isDismissible: true,
- },
- {
- id: '2',
- content: 'This is an informational snackbar notice.',
- status: 'info',
- isDismissible: true,
- },
- {
- id: '3',
- content: 'This is a snackbar error notice.',
- status: 'error',
- isDismissible: true,
- },
- {
- id: '4',
- content: 'This is a snackbar warning notice.',
- status: 'warning',
- isDismissible: true,
- },
- {
- id: '5',
- content: 'This is a snackbar success notice.',
- status: 'success',
- isDismissible: true,
- },
- ],
- className: undefined,
- onRemove: () => void 0,
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/snackbar.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/snackbar.stories.tsx
deleted file mode 100644
index 5b9f7dd3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/stories/snackbar.stories.tsx
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * External dependencies
- */
-import type { StoryFn, Meta } from '@storybook/react';
-
-/**
- * Internal dependencies
- */
-import Snackbar, { SnackbarProps } from '../snackbar';
-const availableStatus = [ 'default', 'success', 'error', 'warning', 'info' ];
-
-export default {
- title: 'Base Components/SnackbarList/Snackbar',
- argTypes: {
- status: {
- control: 'radio',
- options: availableStatus,
- description:
- 'Status determines the color of the notice and the icon.',
- },
- isDismissible: {
- control: 'boolean',
- description:
- 'Determines whether the notice can be dismissed by the user. When set to true, a close icon will be displayed on the banner.',
- },
- summary: {
- description:
- 'Optional summary text shown above notice content, used when several notices are listed together.',
- control: 'text',
- },
- className: {
- description: 'Additional class name to give to the notice.',
- control: 'text',
- },
- spokenMessage: {
- description:
- 'Optionally provided to change the spoken message for assistive technology. If not provided, the `children` prop will be used as the spoken message.',
- control: 'text',
- },
- politeness: {
- control: 'radio',
- options: [ 'polite', 'assertive' ],
- description:
- 'Determines the level of politeness for the notice for assistive technology.',
- },
- children: {
- description:
- 'The displayed message of a notice. Also used as the spoken message for assistive technology, unless `spokenMessage` is provided as an alternative message.',
- disable: true,
- },
- onRemove: {
- description:
- 'Function called when dismissing the notice. When the close icon is clicked or the Escape key is pressed, this function will be called.',
- disable: true,
- },
- },
- component: Snackbar,
-} as Meta< SnackbarProps >;
-
-const Template: StoryFn< SnackbarProps > = ( args ) => {
- return ;
-};
-
-export const Default = Template.bind( {} );
-Default.args = {
- children: 'This is a default snackbar notice',
- status: 'default',
- isDismissible: true,
- summary: undefined,
- className: undefined,
- spokenMessage: undefined,
- politeness: undefined,
-};
-
-export const Error = Template.bind( {} );
-Error.args = {
- children: 'This is an error snackbar notice',
- status: 'error',
-};
-
-export const Warning = Template.bind( {} );
-Warning.args = {
- children: 'This is a warning snackbar notice',
- status: 'warning',
-};
-
-export const Info = Template.bind( {} );
-Info.args = {
- children: 'This is an informational snackbar notice',
- status: 'info',
-};
-
-export const Success = Template.bind( {} );
-Success.args = {
- children: 'This is a success snackbar notice',
- status: 'success',
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/style.scss
deleted file mode 100644
index 8cc5b70e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/snackbar-list/style.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-.wc-block-components-notice-snackbar-list {
- z-index: 100000;
- box-sizing: border-box;
- // Disable pointer events, so that clicking this area
- // outside of an individual notice still allows the UI
- // underneath to be clicked.
- pointer-events: none;
- position: fixed;
- bottom: $gap-large;
- left: $gap-large;
- right: $gap-large;
-}
-
-.wc-block-components-notice-snackbar-list .wc-block-components-notice-banner,
-.wc-block-components-notice-banner.wc-block-components-notice-snackbar {
- display: inline-flex;
- width: auto;
- max-width: 600px;
- pointer-events: all;
- border: 1px solid transparent;
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
- position: relative;
- margin: $gap-large $gap 0 0;
-
- &.is-error,
- &.is-info,
- &.is-success {
- border-color: transparent;
- }
-
- &.is-default {
- border-color: $gray-800;
- }
-
- @include breakpoint("<782px") {
- width: 100%;
- max-width: none;
- }
-}
-
-.notice-transition-enter {
- max-height: 0;
-}
-.notice-transition-enter.notice-transition-enter-active {
- max-height: 99em;
- transition: max-height 0.5s ease-in;
-}
-.notice-transition-enter-done {
- max-height: auto;
-}
-.notice-transition-exit {
- opacity: 1;
-}
-.notice-transition-exit.notice-transition-exit-active {
- opacity: 0;
- transition: opacity 0.5s ease-in;
-}
-.notice-transition-exit-done {
- opacity: 0;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/StateInputProps.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/StateInputProps.ts
deleted file mode 100644
index 0abb2101..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/StateInputProps.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-export interface StateInputProps {
- className?: string;
- label: string;
- id: string;
- autoComplete?: string;
- value: string;
- country: string;
- onChange: ( value: string ) => void;
- required?: boolean;
- errorMessage?: string | undefined;
- errorId?: string;
-}
-
-export type StateInputWithStatesProps = StateInputProps & {
- states: Record< string, Record< string, string > >;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/billing-state-input.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/billing-state-input.tsx
deleted file mode 100644
index 847c71d2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/billing-state-input.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * External dependencies
- */
-import { ALLOWED_STATES } from '@woocommerce/block-settings';
-
-/**
- * Internal dependencies
- */
-import StateInput from './state-input';
-import type { StateInputProps } from './StateInputProps';
-
-const BillingStateInput = ( props: StateInputProps ): JSX.Element => {
- return ;
-};
-
-export default BillingStateInput;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/index.ts
deleted file mode 100644
index 30e25df9..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export { default as StateInput } from './state-input';
-export { default as BillingStateInput } from './billing-state-input';
-export { default as ShippingStateInput } from './shipping-state-input';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/shipping-state-input.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/shipping-state-input.tsx
deleted file mode 100644
index 5ea21534..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/shipping-state-input.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * External dependencies
- */
-import { SHIPPING_STATES } from '@woocommerce/block-settings';
-
-/**
- * Internal dependencies
- */
-import StateInput from './state-input';
-import type { StateInputProps } from './StateInputProps';
-
-const ShippingStateInput = ( props: StateInputProps ): JSX.Element => {
- return ;
-};
-
-export default ShippingStateInput;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/state-input.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/state-input.tsx
deleted file mode 100644
index f8a61f16..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/state-input.tsx
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { decodeEntities } from '@wordpress/html-entities';
-import { useCallback, useMemo, useEffect, useRef } from '@wordpress/element';
-import classnames from 'classnames';
-import { ValidatedTextInput } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import Combobox from '../combobox';
-import './style.scss';
-import type { StateInputWithStatesProps } from './StateInputProps';
-
-const optionMatcher = (
- value: string,
- options: { label: string; value: string }[]
-): string => {
- const foundOption = options.find(
- ( option ) =>
- option.label.toLocaleUpperCase() === value.toLocaleUpperCase() ||
- option.value.toLocaleUpperCase() === value.toLocaleUpperCase()
- );
- return foundOption ? foundOption.value : '';
-};
-
-const StateInput = ( {
- className,
- id,
- states,
- country,
- label,
- onChange,
- autoComplete = 'off',
- value = '',
- required = false,
- errorId = '',
-}: StateInputWithStatesProps ): JSX.Element => {
- const countryStates = states[ country ];
- const options = useMemo(
- () =>
- countryStates
- ? Object.keys( countryStates ).map( ( key ) => ( {
- value: key,
- label: decodeEntities( countryStates[ key ] ),
- } ) )
- : [],
- [ countryStates ]
- );
-
- /**
- * Handles state selection onChange events. Finds a matching state by key or value.
- */
- const onChangeState = useCallback(
- ( stateValue: string ) => {
- const newValue =
- options.length > 0
- ? optionMatcher( stateValue, options )
- : stateValue;
- if ( newValue !== value ) {
- onChange( newValue );
- }
- },
- [ onChange, options, value ]
- );
-
- /**
- * Track value changes.
- */
- const valueRef = useRef< string >( value );
-
- useEffect( () => {
- if ( valueRef.current !== value ) {
- valueRef.current = value;
- }
- }, [ value ] );
-
- /**
- * If given a list of options, ensure the value matches those options or trigger change.
- */
- useEffect( () => {
- if ( options.length > 0 && valueRef.current ) {
- const match = optionMatcher( valueRef.current, options );
- if ( match !== valueRef.current ) {
- onChangeState( match );
- }
- }
- }, [ options, onChangeState ] );
-
- if ( options.length > 0 ) {
- return (
-
- );
- }
-
- return (
-
- );
-};
-
-export default StateInput;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/style.scss
deleted file mode 100644
index 088f4154..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/state-input/style.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.wc-block-components-state-input {
- margin-top: $gap;
-
- // Fixes width in the editor.
- .components-flex {
- width: 100%;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/index.tsx
deleted file mode 100644
index 51cb5421..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/index.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import { RawHTML, useMemo } from '@wordpress/element';
-import { WordCountType } from '@woocommerce/block-settings';
-import type { CSSProperties } from 'react';
-
-/**
- * Internal dependencies
- */
-import { generateSummary } from './utils';
-
-interface SummaryProps {
- className?: string;
- source: string;
- maxLength?: number;
- countType?: WordCountType;
- style?: CSSProperties;
-}
-/**
- * Summary component.
- *
- * @param {Object} props Component props.
- * @param {string} props.source Source text.
- * @param {number} props.maxLength Max length of the summary, using countType.
- * @param {string} props.countType One of words, characters_excluding_spaces, or characters_including_spaces.
- * @param {string} props.className Class name for rendered component.
- * @param {CSSProperties} props.style Style Object for rendered component.
- *
- */
-export const Summary = ( {
- source,
- maxLength = 15,
- countType = 'words',
- className = '',
- style = {},
-}: SummaryProps ): JSX.Element => {
- const summaryText = useMemo( () => {
- return generateSummary( source, maxLength, countType );
- }, [ source, maxLength, countType ] );
-
- return (
-
- { summaryText }
-
- );
-};
-
-export default Summary;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/test/index.js
deleted file mode 100644
index 71c9f9e5..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/test/index.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * Internal dependencies
- */
-import { generateSummary } from '../utils';
-
-describe( 'Summary Component', () => {
- describe( 'Test the generateSummary utility', () => {
- const testContent =
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
';
-
- it( 'Default', async () => {
- const result = generateSummary( testContent );
-
- expect( result.trim() ).toEqual(
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore…
'
- );
- } );
- it( 'No max words - return full description', async () => {
- const result = generateSummary( testContent, 100000 );
-
- expect( result.trim() ).toEqual(
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\nUt enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
\nExcepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
'
- );
- } );
- it( 'Limit to 3 words', async () => {
- const result = generateSummary( testContent, 3 );
-
- expect( result.trim() ).toEqual(
- 'Lorem ipsum dolor…
'
- );
- } );
- it( 'Limit to 1 word', async () => {
- const result = generateSummary( testContent, 1 );
-
- expect( result.trim() ).toEqual( 'Lorem…
' );
- } );
- it( 'Limit to 15 characters, including spaces.', async () => {
- const result = generateSummary(
- testContent,
- 15,
- 'characters_including_spaces'
- );
-
- expect( result.trim() ).toEqual( 'Lorem ipsum dol…
' );
- } );
- it( 'Limit to 15 characters, excluding spaces.', async () => {
- const result = generateSummary(
- testContent,
- 15,
- 'characters_excluding_spaces'
- );
-
- expect( result.trim() ).toEqual(
- 'Lorem ipsum dolor…
'
- );
- } );
- } );
- describe( 'Test the generateSummary utility with HTML tags in strings', () => {
- const testContent =
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.
';
-
- it( 'Limit string to 10 characters', async () => {
- const result = generateSummary(
- testContent,
- 10,
- 'characters_excluding_spaces'
- );
-
- expect( result.trim() ).toEqual( 'Lorem ipsum…
' );
- } );
- it( 'Limit string to 5 words', async () => {
- const result = generateSummary( testContent, 5, 'words' );
-
- expect( result.trim() ).toEqual(
- 'Lorem ipsum dolor sit amet…
'
- );
- } );
- it( 'First paragraph only - tags are not stripped.', async () => {
- const result = generateSummary( testContent, 9999, 'words' );
-
- expect( result.trim() ).toEqual(
- 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.
'
- );
- } );
- } );
- describe( 'Test the generateSummary utility with special chars', () => {
- const testContent =
- '我不知道这是否行得通。
我是用中文写的说明,因此我们可以测试如何修剪产品摘要中的单词。
';
-
- it( 'Default', async () => {
- const result = generateSummary(
- testContent,
- 15,
- 'characters_excluding_spaces'
- );
-
- expect( result.trim() ).toEqual( '我不知道这是否行得通。
' );
- } );
- it( 'Limit to 3 words', async () => {
- const result = generateSummary(
- testContent,
- 3,
- 'characters_excluding_spaces'
- );
-
- expect( result.trim() ).toEqual( '我不知…
' );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/utils.ts
deleted file mode 100644
index 16019e16..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/summary/utils.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * External dependencies
- */
-import { autop } from '@wordpress/autop';
-import { trimCharacters, trimWords } from '@woocommerce/utils';
-import { count, CountType } from '@wordpress/wordcount';
-
-/**
- * Get first paragraph from some HTML text, or return whole string.
- *
- * @param {string} source Source text.
- * @return {string} First paragraph found in string.
- */
-const getFirstParagraph = ( source: string ) => {
- const pIndex = source.indexOf( '' );
-
- if ( pIndex === -1 ) {
- return source;
- }
-
- return source.substr( 0, pIndex + 4 );
-};
-
-/**
- * Generates the summary text from a string of text.
- *
- * @param {string} source Source text.
- * @param {number} maxLength Limit number of countType returned if text has multiple paragraphs.
- * @param {string} countType What is being counted. One of words, characters_excluding_spaces, or characters_including_spaces.
- * @return {string} Generated summary.
- */
-export const generateSummary = (
- source: string,
- maxLength = 15,
- countType: CountType = 'words'
-) => {
- const sourceWithParagraphs = autop( source );
- const sourceWordCount = count( sourceWithParagraphs, countType );
-
- if ( sourceWordCount <= maxLength ) {
- return sourceWithParagraphs;
- }
-
- const firstParagraph = getFirstParagraph( sourceWithParagraphs );
- const firstParagraphWordCount = count( firstParagraph, countType );
-
- if ( firstParagraphWordCount <= maxLength ) {
- return firstParagraph;
- }
-
- if ( countType === 'words' ) {
- return trimWords( firstParagraph, maxLength );
- }
-
- return trimCharacters(
- firstParagraph,
- maxLength,
- countType === 'characters_including_spaces'
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/index.tsx
deleted file mode 100644
index e70e6e3e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/index.tsx
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * External dependencies
- */
-import { withInstanceId } from '@wordpress/compose';
-import classnames from 'classnames';
-import { __ } from '@wordpress/i18n';
-import { useTabState, Tab, TabList, TabPanel } from 'reakit/Tab';
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-export interface TabsProps {
- /**
- * Component wrapper classname
- */
- className?: string;
- /**
- * Event handler triggered when a tab is selected
- */
- onSelect?: ( tabName: string ) => void;
- /**
- * Array of tab objects
- */
- tabs: Array< {
- name: string;
- title: string;
- content: JSX.Element;
- ariaLabel?: string;
- } >;
- /**
- * Classname to be applied to the active tab
- */
- activeClass?: string;
- /**
- * Name of the tab to be selected by default
- */
- initialTabName?: string | undefined;
- /**
- * Aria label for the tablist
- */
- ariaLabel?: string;
- /**
- * Instance ID for the component
- */
- instanceId: number;
- /**
- * ID for the component
- */
- id?: string;
-}
-
-/**
- * Exporting the component for Storybook. Use the default export instead.
- */
-export const __TabsWithoutInstanceId = ( {
- className,
- onSelect = () => null,
- tabs,
- activeClass = 'is-active',
- initialTabName,
- ariaLabel = __( 'Tabbed Content', 'woo-gutenberg-products-block' ),
- instanceId,
- id,
-}: TabsProps ): JSX.Element | null => {
- const initialTab = initialTabName
- ? { selectedId: `${ instanceId }-${ initialTabName }` }
- : undefined;
- const tabState = useTabState( initialTab );
- if ( tabs.length === 0 ) {
- return null;
- }
- return (
-
-
- { tabs.map( ( { name, title, ariaLabel: tabAriaLabel } ) => (
- onSelect( name ) }
- type="button"
- key={ name }
- aria-label={ tabAriaLabel }
- >
-
- { title }
-
-
- ) ) }
-
-
- { tabs.map( ( { name, content } ) => (
-
- { tabState.selectedId === `${ instanceId }-${ name }` &&
- content }
-
- ) ) }
-
- );
-};
-
-export default withInstanceId( __TabsWithoutInstanceId );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/stories/index.stories.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/stories/index.stories.tsx
deleted file mode 100644
index 1be8237a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/stories/index.stories.tsx
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * External dependencies
- */
-import type { Story, Meta } from '@storybook/react';
-import { useState } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import { __TabsWithoutInstanceId as Tabs, TabsProps } from '..';
-
-export default {
- title: 'Base Components/Tabs',
- component: Tabs,
- args: {
- tabs: [
- {
- name: 'firstTab',
- title: 'First Tab',
- content: Content of the first tab
,
- },
- {
- name: 'secondTab',
- title: 'Second Tab',
- content: Content of the second tab
,
- },
- ],
- initialTabName: 'firstTab',
- },
- argTypes: {
- initialTabName: {
- control: {
- type: 'select',
- options: [ 'firstTab', 'secondTab' ],
- },
- },
- },
-} as Meta< TabsProps >;
-
-const Template: Story< TabsProps > = ( args ) => {
- const [ initialTab, setInitialTab ] = useState( args.initialTabName );
-
- return (
- {
- setInitialTab( newTabName );
- } }
- { ...args }
- />
- );
-};
-
-export const Default = Template.bind( {} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/style.scss
deleted file mode 100644
index 19a10559..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/components/tabs/style.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-.wc-block-components-tabs {
- .wc-block-components-tabs__list {
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- width: 100%;
- > .wc-block-components-tabs__item {
- border: none;
- flex: auto;
- background: transparent;
- padding: $gap-small $gap;
- color: inherit;
- outline-offset: -1px;
- text-align: center;
- transition: box-shadow 0.1s linear;
- box-shadow: inset 0 -1px currentColor;
- border-radius: 0;
- &.is-active {
- box-shadow: inset 0 -3px currentColor;
- font-weight: 600;
- position: relative;
- }
- &:focus {
- outline-offset: -1px;
- outline: 1px dotted currentColor;
- }
- &:hover,
- &:active {
- background: transparent;
- }
- .wc-block-components-tabs__item-content {
- @include font-size(regular);
- line-height: 1;
- width: fit-content;
- display: inline-block;
- font-weight: bold;
-
- > img,
- > svg {
- height: 1.2em;
- vertical-align: middle;
- margin: 0.2em 0 -0.2em;
- }
-
- .wc-block-components-payment-method-icons {
- margin: 0.2em 0 -0.2em;
-
- .wc-block-components-payment-method-icon {
- height: 1.2em;
- vertical-align: middle;
- }
- }
- }
- }
- }
- .wc-block-components-tabs__content {
- padding: $gap 0;
- text-transform: none;
- }
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitter-callback.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitter-callback.ts
deleted file mode 100644
index 92445a23..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitter-callback.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Internal dependencies
- */
-import { actions } from './reducer';
-import type { ActionType, ActionCallbackType } from './types';
-
-export const emitterCallback =
- ( type: string, observerDispatch: React.Dispatch< ActionType > ) =>
- ( callback: ActionCallbackType, priority = 10 ): ( () => void ) => {
- const action = actions.addEventCallback( type, callback, priority );
- observerDispatch( action );
- return () => {
- observerDispatch( actions.removeEventCallback( type, action.id ) );
- };
- };
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitters.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitters.ts
deleted file mode 100644
index c4ce28ce..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/emitters.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * Internal dependencies
- */
-import {
- getObserversByPriority,
- isErrorResponse,
- isFailResponse,
- ObserverResponse,
- responseTypes,
-} from './utils';
-import type { EventObserversType } from './types';
-import { isObserverResponse } from '../../../types/type-guards/observers';
-
-/**
- * Emits events on registered observers for the provided type and passes along
- * the provided data.
- *
- * This event emitter will silently catch promise errors, but doesn't care
- * otherwise if any errors are caused by observers. So events that do care
- * should use `emitEventWithAbort` instead.
- *
- * @param {Object} observers The registered observers to omit to.
- * @param {string} eventType The event type being emitted.
- * @param {*} data Data passed along to the observer when it is invoked.
- *
- * @return {Promise} A promise that resolves to true after all observers have executed.
- */
-export const emitEvent = async (
- observers: EventObserversType,
- eventType: string,
- data: unknown
-): Promise< unknown > => {
- const observersByType = getObserversByPriority( observers, eventType );
- const observerResponses = [];
- for ( const observer of observersByType ) {
- try {
- const observerResponse = await Promise.resolve(
- observer.callback( data )
- );
- if ( typeof observerResponse === 'object' ) {
- observerResponses.push( observerResponse );
- }
- } catch ( e ) {
- // we don't care about errors blocking execution, but will console.error for troubleshooting.
- // eslint-disable-next-line no-console
- console.error( e );
- }
- }
- return observerResponses.length ? observerResponses : true;
-};
-
-/**
- * Emits events on registered observers for the provided type and passes along
- * the provided data. This event emitter will abort if an observer throws an
- * error or if the response includes an object with an error type property.
- *
- * Any successful observer responses before abort will be included in the returned package.
- *
- * @param {Object} observers The registered observers to omit to.
- * @param {string} eventType The event type being emitted.
- * @param {*} data Data passed along to the observer when it is invoked.
- *
- * @return {Promise} Returns a promise that resolves to either boolean, or an array of responses
- * from registered observers that were invoked up to the point of an error.
- */
-export const emitEventWithAbort = async (
- observers: EventObserversType,
- eventType: string,
- data: unknown
-): Promise< ObserverResponse[] > => {
- const observerResponses: ObserverResponse[] = [];
- const observersByType = getObserversByPriority( observers, eventType );
- for ( const observer of observersByType ) {
- try {
- const response = await Promise.resolve( observer.callback( data ) );
- if ( ! isObserverResponse( response ) ) {
- continue;
- }
- if ( ! response.hasOwnProperty( 'type' ) ) {
- throw new Error(
- 'Returned objects from event emitter observers must return an object with a type property'
- );
- }
- if ( isErrorResponse( response ) || isFailResponse( response ) ) {
- observerResponses.push( response );
- // early abort.
- return observerResponses;
- }
- // all potential abort conditions have been considered push the
- // response to the array.
- observerResponses.push( response );
- } catch ( e ) {
- // We don't handle thrown errors but just console.log for troubleshooting.
- // eslint-disable-next-line no-console
- console.error( e );
- observerResponses.push( { type: responseTypes.ERROR } );
- return observerResponses;
- }
- }
- return observerResponses;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/index.ts
deleted file mode 100644
index a9729d4b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/index.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from './reducer';
-export * from './emitters';
-export * from './emitter-callback';
-export * from './types';
-export * from './utils';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/reducer.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/reducer.ts
deleted file mode 100644
index 65d8b19c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/reducer.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * Internal dependencies
- */
-import {
- ACTION,
- ActionType,
- ActionCallbackType,
- EventObserversType,
-} from './types';
-
-export function generateUniqueId() {
- return Math.floor( Math.random() * Date.now() ).toString();
-}
-
-export const actions = {
- addEventCallback: (
- eventType: string,
- callback: ActionCallbackType,
- priority = 10
- ): ActionType => {
- return {
- id: generateUniqueId(),
- type: ACTION.ADD_EVENT_CALLBACK,
- eventType,
- callback,
- priority,
- };
- },
- removeEventCallback: ( eventType: string, id: string ): ActionType => {
- return {
- id,
- type: ACTION.REMOVE_EVENT_CALLBACK,
- eventType,
- };
- },
-};
-
-const initialState = {} as EventObserversType;
-
-/**
- * Handles actions for emitters
- */
-export const reducer = (
- state = initialState,
- { type, eventType, id, callback, priority }: ActionType
-): typeof initialState => {
- const newEvents = state.hasOwnProperty( eventType )
- ? new Map( state[ eventType ] )
- : new Map();
- switch ( type ) {
- case ACTION.ADD_EVENT_CALLBACK:
- newEvents.set( id, { priority, callback } );
- return {
- ...state,
- [ eventType ]: newEvents,
- };
- case ACTION.REMOVE_EVENT_CALLBACK:
- newEvents.delete( id );
- return {
- ...state,
- [ eventType ]: newEvents,
- };
- }
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/test/emitters.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/test/emitters.js
deleted file mode 100644
index e6c0075c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/test/emitters.js
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Internal dependencies
- */
-import { emitEvent, emitEventWithAbort } from '../emitters';
-
-describe( 'Testing emitters', () => {
- let observerMocks = {};
- let observerA;
- let observerB;
- let observerPromiseWithResolvedValue;
- beforeEach( () => {
- observerA = jest.fn().mockReturnValue( true );
- observerB = jest.fn().mockReturnValue( true );
- observerPromiseWithResolvedValue = jest.fn().mockResolvedValue( 10 );
- observerMocks = new Map( [
- [ 'observerA', { priority: 10, callback: observerA } ],
- [ 'observerB', { priority: 10, callback: observerB } ],
- [
- 'observerReturnValue',
- { priority: 10, callback: jest.fn().mockReturnValue( 10 ) },
- ],
- [
- 'observerPromiseWithReject',
- {
- priority: 10,
- callback: jest.fn().mockRejectedValue( 'an error' ),
- },
- ],
- [
- 'observerPromiseWithResolvedValue',
- { priority: 10, callback: observerPromiseWithResolvedValue },
- ],
- [
- 'observerSuccessType',
- {
- priority: 10,
- callback: jest.fn().mockReturnValue( { type: 'success' } ),
- },
- ],
- ] );
- } );
- describe( 'Testing emitEvent()', () => {
- it( 'invokes all observers', async () => {
- const observers = { test: observerMocks };
- const response = await emitEvent( observers, 'test', 'foo' );
- expect( console ).toHaveErroredWith( 'an error' );
- expect( observerA ).toHaveBeenCalledTimes( 1 );
- expect( observerB ).toHaveBeenCalledWith( 'foo' );
- expect( response ).toEqual( [ { type: 'success' } ] );
- } );
- } );
- describe( 'Testing emitEventWithAbort()', () => {
- it( 'does not abort on any return value other than an object with an error or fail type property', async () => {
- observerMocks.delete( 'observerPromiseWithReject' );
- const observers = { test: observerMocks };
- const response = await emitEventWithAbort(
- observers,
- 'test',
- 'foo'
- );
- expect( console ).not.toHaveErrored();
- expect( observerB ).toHaveBeenCalledTimes( 1 );
- expect( observerPromiseWithResolvedValue ).toHaveBeenCalled();
- expect( response ).toEqual( [ { type: 'success' } ] );
- } );
- it( 'Aborts on a return value with an object that has a a fail type property', async () => {
- const validObjectResponse = jest
- .fn()
- .mockReturnValue( { type: 'failure' } );
- observerMocks.set( 'observerValidObject', {
- priority: 5,
- callback: validObjectResponse,
- } );
- const observers = { test: observerMocks };
- const response = await emitEventWithAbort(
- observers,
- 'test',
- 'foo'
- );
- expect( console ).not.toHaveErrored();
- expect( validObjectResponse ).toHaveBeenCalledTimes( 1 );
- expect( observerPromiseWithResolvedValue ).not.toHaveBeenCalled();
- expect( response ).toEqual( [ { type: 'failure' } ] );
- } );
- it( 'throws an error on an object returned from observer without a type property', async () => {
- const failingObjectResponse = jest.fn().mockReturnValue( {} );
- observerMocks.set( 'observerInvalidObject', {
- priority: 5,
- callback: failingObjectResponse,
- } );
- const observers = { test: observerMocks };
- const response = await emitEventWithAbort(
- observers,
- 'test',
- 'foo'
- );
- expect( console ).toHaveErrored();
- expect( failingObjectResponse ).toHaveBeenCalledTimes( 1 );
- expect( observerPromiseWithResolvedValue ).not.toHaveBeenCalled();
- expect( response ).toEqual( [ { type: 'error' } ] );
- } );
- } );
- describe( 'Test Priority', () => {
- it( 'executes observers in expected order by priority', async () => {
- const a = jest.fn();
- const b = jest.fn().mockReturnValue( { type: 'error' } );
- const observers = {
- test: new Map( [
- [ 'observerA', { priority: 200, callback: a } ],
- [ 'observerB', { priority: 10, callback: b } ],
- ] ),
- };
- await emitEventWithAbort( observers, 'test', 'foo' );
- expect( console ).not.toHaveErrored();
- expect( b ).toHaveBeenCalledTimes( 1 );
- expect( a ).not.toHaveBeenCalled();
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/types.ts
deleted file mode 100644
index 27bdac79..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/types.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export enum ACTION {
- ADD_EVENT_CALLBACK = 'add_event_callback',
- REMOVE_EVENT_CALLBACK = 'remove_event_callback',
-}
-
-export type ActionCallbackType = ( ...args: unknown[] ) => unknown;
-
-export type ActionType = {
- type: ACTION;
- eventType: string;
- id: string;
- callback?: ActionCallbackType;
- priority?: number;
-};
-
-export type ObserverType = { priority: number; callback: ActionCallbackType };
-export type ObserversType = Map< string, ObserverType >;
-export type EventObserversType = Record< string, ObserversType >;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/utils.ts
deleted file mode 100644
index f9749e2d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/event-emit/utils.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-/**
- * External dependencies
- */
-import { FieldValidationStatus, isObject } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import type { EventObserversType, ObserverType } from './types';
-
-export const getObserversByPriority = (
- observers: EventObserversType,
- eventType: string
-): ObserverType[] => {
- return observers[ eventType ]
- ? Array.from( observers[ eventType ].values() ).sort( ( a, b ) => {
- return a.priority - b.priority;
- } )
- : [];
-};
-
-export enum responseTypes {
- SUCCESS = 'success',
- FAIL = 'failure',
- ERROR = 'error',
-}
-
-export enum noticeContexts {
- CART = 'wc/cart',
- CHECKOUT = 'wc/checkout',
- PAYMENTS = 'wc/checkout/payments',
- EXPRESS_PAYMENTS = 'wc/checkout/express-payments',
- CONTACT_INFORMATION = 'wc/checkout/contact-information',
- SHIPPING_ADDRESS = 'wc/checkout/shipping-address',
- BILLING_ADDRESS = 'wc/checkout/billing-address',
- SHIPPING_METHODS = 'wc/checkout/shipping-methods',
- CHECKOUT_ACTIONS = 'wc/checkout/checkout-actions',
-}
-
-export interface ResponseType extends Record< string, unknown > {
- type: responseTypes;
- retry?: boolean;
-}
-
-/**
- * Observers of checkout/cart events can return a response object to indicate success/error/failure. They may also
- * optionally pass metadata.
- */
-export interface ObserverResponse {
- type: responseTypes;
- meta?: Record< string, unknown > | undefined;
- validationErrors?: Record< string, FieldValidationStatus > | undefined;
-}
-
-const isResponseOf = (
- response: unknown,
- type: string
-): response is ResponseType => {
- return isObject( response ) && 'type' in response && response.type === type;
-};
-
-export const isSuccessResponse = (
- response: unknown
-): response is ObserverFailResponse => {
- return isResponseOf( response, responseTypes.SUCCESS );
-};
-interface ObserverSuccessResponse extends ObserverResponse {
- type: responseTypes.SUCCESS;
-}
-export const isErrorResponse = (
- response: unknown
-): response is ObserverSuccessResponse => {
- return isResponseOf( response, responseTypes.ERROR );
-};
-interface ObserverErrorResponse extends ObserverResponse {
- type: responseTypes.ERROR;
-}
-
-interface ObserverFailResponse extends ObserverResponse {
- type: responseTypes.FAIL;
-}
-export const isFailResponse = (
- response: unknown
-): response is ObserverErrorResponse => {
- return isResponseOf( response, responseTypes.FAIL );
-};
-
-export const shouldRetry = ( response: unknown ): boolean => {
- return (
- ! isObject( response ) ||
- typeof response.retry === 'undefined' ||
- response.retry === true
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/index.ts
deleted file mode 100644
index 8f510164..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './use-store-cart';
-export * from './use-store-cart-coupons';
-export * from './use-store-cart-item-quantity';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart-item-quantity.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart-item-quantity.js
deleted file mode 100644
index 4c3baf5d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart-item-quantity.js
+++ /dev/null
@@ -1,216 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-import { createRegistry, RegistryProvider } from '@wordpress/data';
-import { CART_STORE_KEY, CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import * as mockUseStoreCart from '../use-store-cart';
-import { useStoreCartItemQuantity } from '../use-store-cart-item-quantity';
-import { config as checkoutStoreConfig } from '../../../../../data/checkout';
-
-jest.mock( '../use-store-cart', () => ( {
- useStoreCart: jest.fn(),
-} ) );
-
-jest.mock( '@woocommerce/block-data', () => ( {
- __esModule: true,
- CART_STORE_KEY: 'test/cart/store',
- CHECKOUT_STORE_KEY: 'test/checkout/store',
-} ) );
-
-// Make debounce instantaneous.
-jest.mock( 'use-debounce', () => ( {
- useDebounce: ( a ) => [ a ],
-} ) );
-
-describe( 'useStoreCartItemQuantity', () => {
- let registry, renderer;
-
- const getWrappedComponents = ( Component ) => (
-
-
-
- );
-
- const getTestComponent = ( options ) => () => {
- const props = useStoreCartItemQuantity( options );
- return
;
- };
-
- let mockRemoveItemFromCart;
- let mockChangeCartItemQuantity;
- const setupMocks = ( { isPendingDelete, isPendingQuantity } ) => {
- // Register mock cart store
- mockRemoveItemFromCart = jest
- .fn()
- .mockReturnValue( { type: 'removeItemFromCartAction' } );
- mockChangeCartItemQuantity = jest
- .fn()
- .mockReturnValue( { type: 'changeCartItemQuantityAction' } );
-
- registry.registerStore( CART_STORE_KEY, {
- reducer: () => ( {} ),
- actions: {
- removeItemFromCart: mockRemoveItemFromCart,
- changeCartItemQuantity: mockChangeCartItemQuantity,
- },
- selectors: {
- isItemPendingDelete: jest
- .fn()
- .mockReturnValue( isPendingDelete ),
- isItemPendingQuantity: jest
- .fn()
- .mockReturnValue( isPendingQuantity ),
- },
- } );
-
- // Register actual checkout store
- registry.registerStore( CHECKOUT_STORE_KEY, checkoutStoreConfig );
- };
-
- beforeEach( () => {
- registry = createRegistry();
- renderer = null;
- } );
-
- afterEach( () => {
- mockRemoveItemFromCart.mockReset();
- mockChangeCartItemQuantity.mockReset();
- } );
-
- describe( 'with no errors and not pending', () => {
- beforeEach( () => {
- setupMocks( { isPendingDelete: false, isPendingQuantity: false } );
- mockUseStoreCart.useStoreCart.mockReturnValue( {
- cartErrors: {},
- } );
- } );
-
- it( 'update quantity value should happen instantly', () => {
- const TestComponent = getTestComponent( {
- key: '123',
- quantity: 1,
- } );
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const { setItemQuantity, quantity } =
- renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
-
- expect( quantity ).toBe( 1 );
-
- act( () => {
- setItemQuantity( 2 );
- } );
-
- const { quantity: newQuantity } =
- renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
-
- expect( newQuantity ).toBe( 2 );
- } );
-
- it( 'removeItem should call the dispatch action', () => {
- const TestComponent = getTestComponent( {
- key: '123',
- quantity: 1,
- } );
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const { removeItem } = renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
-
- act( () => {
- removeItem();
- } );
-
- expect( mockRemoveItemFromCart ).toHaveBeenCalledWith( '123' );
- } );
-
- it( 'setItemQuantity should call the dispatch action', () => {
- const TestComponent = getTestComponent( {
- key: '123',
- quantity: 1,
- } );
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const { setItemQuantity } = renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
-
- act( () => {
- setItemQuantity( 2 );
- } );
-
- expect( mockChangeCartItemQuantity.mock.calls ).toEqual( [
- [ '123', 2 ],
- ] );
- } );
- } );
-
- it( 'should expose store errors', () => {
- const mockCartErrors = [ { message: 'Test error' } ];
- setupMocks( {
- isPendingDelete: false,
- isPendingQuantity: false,
- } );
- mockUseStoreCart.useStoreCart.mockReturnValue( {
- cartErrors: mockCartErrors,
- } );
-
- const TestComponent = getTestComponent( {
- key: '123',
- quantity: 1,
- } );
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const { cartItemQuantityErrors } =
- renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
-
- expect( cartItemQuantityErrors ).toEqual( mockCartErrors );
- } );
-
- it( 'isPendingDelete should depend on the value provided by the store', () => {
- setupMocks( {
- isPendingDelete: true,
- isPendingQuantity: false,
- } );
- mockUseStoreCart.useStoreCart.mockReturnValue( {
- cartErrors: {},
- } );
-
- const TestComponent = getTestComponent( {
- key: '123',
- quantity: 1,
- } );
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const { isPendingDelete } = renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
-
- expect( isPendingDelete ).toBe( true );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart.jsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart.jsx
deleted file mode 100644
index 84b97c12..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/test/use-store-cart.jsx
+++ /dev/null
@@ -1,273 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-import { createRegistry, RegistryProvider } from '@wordpress/data';
-import { previewCart } from '@woocommerce/resource-previews';
-import { CART_STORE_KEY as storeKey } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { defaultCartData, useStoreCart } from '../use-store-cart';
-import { useEditorContext } from '../../../providers/editor-context';
-
-jest.mock( '../../../providers/editor-context', () => ( {
- useEditorContext: jest.fn(),
-} ) );
-
-jest.mock( '@woocommerce/block-data', () => ( {
- ...jest.requireActual( '@woocommerce/block-data' ),
- __esModule: true,
- CART_STORE_KEY: 'test/store',
-} ) );
-
-describe( 'useStoreCart', () => {
- let registry, renderer;
-
- const receiveCartMock = () => {};
- const receiveCartContentsMock = () => {};
-
- const previewCartData = {
- cartCoupons: previewCart.coupons,
- cartItems: previewCart.items,
- crossSellsProducts: previewCart.cross_sells,
- cartFees: previewCart.fees,
- cartItemsCount: previewCart.items_count,
- cartItemsWeight: previewCart.items_weight,
- cartNeedsPayment: previewCart.needs_payment,
- cartNeedsShipping: previewCart.needs_shipping,
- cartTotals: previewCart.totals,
- cartIsLoading: false,
- cartItemErrors: [],
- cartErrors: [],
- billingData: {
- first_name: '',
- last_name: '',
- company: '',
- address_1: '',
- address_2: '',
- city: '',
- state: '',
- postcode: '',
- country: '',
- email: '',
- phone: '',
- },
- billingAddress: {
- first_name: '',
- last_name: '',
- company: '',
- address_1: '',
- address_2: '',
- city: '',
- state: '',
- postcode: '',
- country: '',
- email: '',
- phone: '',
- },
- shippingAddress: {
- first_name: '',
- last_name: '',
- company: '',
- address_1: '',
- address_2: '',
- city: '',
- state: '',
- postcode: '',
- country: '',
- phone: '',
- },
- shippingRates: previewCart.shipping_rates,
- extensions: {},
- isLoadingRates: false,
- cartHasCalculatedShipping: true,
- };
-
- const mockCartItems = [ { key: '1', id: 1, name: 'Lorem Ipsum' } ];
- const mockShippingAddress = {
- city: 'New York',
- };
- const mockCartData = {
- coupons: [],
- items: mockCartItems,
- fees: [],
- itemsCount: 1,
- itemsWeight: 10,
- needsPayment: true,
- needsShipping: true,
- billingAddress: {},
- shippingAddress: mockShippingAddress,
- shippingRates: [],
- hasCalculatedShipping: true,
- extensions: {},
- errors: [],
- paymentRequirements: [],
- receiveCart: undefined,
- receiveCartContents: undefined,
- };
- const mockCartTotals = {
- currency_code: 'USD',
- };
- const mockCartIsLoading = false;
- const mockCartErrors = [];
- const mockStoreCartData = {
- cartCoupons: [],
- cartItems: mockCartItems,
- cartItemErrors: [],
- cartItemsCount: 1,
- cartItemsWeight: 10,
- cartNeedsPayment: true,
- cartNeedsShipping: true,
- cartTotals: mockCartTotals,
- cartIsLoading: mockCartIsLoading,
- cartErrors: mockCartErrors,
- cartFees: [],
- billingData: {},
- billingAddress: {},
- shippingAddress: mockShippingAddress,
- shippingRates: [],
- extensions: {},
- isLoadingRates: false,
- cartHasCalculatedShipping: true,
- paymentRequirements: [],
- receiveCart: undefined,
- receiveCartContents: undefined,
- };
-
- const getWrappedComponents = ( Component ) => (
-
-
-
- );
-
- const getTestComponent = ( options ) => () => {
- const { receiveCart, receiveCartContents, ...results } =
- useStoreCart( options );
- return (
-
- );
- };
-
- const setUpMocks = () => {
- const mocks = {
- selectors: {
- getCartData: jest.fn().mockReturnValue( mockCartData ),
- getCartErrors: jest.fn().mockReturnValue( mockCartErrors ),
- getCartTotals: jest.fn().mockReturnValue( mockCartTotals ),
- hasFinishedResolution: jest
- .fn()
- .mockReturnValue( ! mockCartIsLoading ),
- isCustomerDataUpdating: jest.fn().mockReturnValue( false ),
- },
- };
- registry.registerStore( storeKey, {
- reducer: () => ( {} ),
- selectors: mocks.selectors,
- } );
- };
-
- beforeEach( () => {
- registry = createRegistry();
- renderer = null;
- setUpMocks();
- } );
-
- afterEach( () => {
- useEditorContext.mockReset();
- } );
-
- describe( 'in frontend', () => {
- beforeEach( () => {
- useEditorContext.mockReturnValue( {
- isEditor: false,
- } );
- } );
-
- it( 'return default data when shouldSelect is false', () => {
- const TestComponent = getTestComponent( {
- shouldSelect: false,
- } );
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const props = renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
- const results = props[ 'data-results' ];
- const receiveCart = props[ 'data-receiveCart' ];
- const receiveCartContents = props[ 'data-receiveCartContents' ];
-
- const {
- receiveCart: defaultReceiveCart,
- receiveCartContents: defaultReceiveCartContents,
- ...remaining
- } = defaultCartData;
- expect( results ).toEqual( remaining );
- expect( receiveCart ).toEqual( defaultReceiveCart );
- expect( receiveCartContents ).toEqual( defaultReceiveCartContents );
- } );
-
- it( 'return store data when shouldSelect is true', () => {
- const TestComponent = getTestComponent( {
- shouldSelect: true,
- } );
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const props = renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
- const results = props[ 'data-results' ];
- const receiveCart = props[ 'data-receiveCart' ];
- const receiveCartContents = props[ 'data-receiveCartContents' ];
-
- expect( results ).toEqual( mockStoreCartData );
- expect( receiveCart ).toBeUndefined();
- expect( receiveCartContents ).toBeUndefined();
- } );
- } );
-
- describe( 'in editor', () => {
- beforeEach( () => {
- useEditorContext.mockReturnValue( {
- isEditor: true,
- previewData: {
- previewCart: {
- ...previewCart,
- receiveCart: receiveCartMock,
- receiveCartContents: receiveCartContentsMock,
- },
- },
- } );
- } );
-
- it( 'return preview data in editor', () => {
- const TestComponent = getTestComponent();
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- const props = renderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
- const results = props[ 'data-results' ];
- const receiveCart = props[ 'data-receiveCart' ];
- const receiveCartContents = props[ 'data-receiveCartContents' ];
-
- expect( results ).toEqual( previewCartData );
- expect( receiveCart ).toEqual( receiveCartMock );
- expect( receiveCartContents ).toEqual( receiveCartContentsMock );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts
deleted file mode 100644
index 81a25490..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-coupons.ts
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * External dependencies
- */
-import { __, sprintf } from '@wordpress/i18n';
-import { useDispatch, useSelect } from '@wordpress/data';
-import { CART_STORE_KEY, VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-import { decodeEntities } from '@wordpress/html-entities';
-import type { StoreCartCoupon } from '@woocommerce/types';
-import { applyCheckoutFilter } from '@woocommerce/blocks-checkout';
-
-/**
- * Internal dependencies
- */
-import { useStoreCart } from './use-store-cart';
-
-/**
- * This is a custom hook for loading the Store API /cart/coupons endpoint and an
- * action for adding a coupon _to_ the cart.
- * See also: https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/src/RestApi/StoreApi
- */
-export const useStoreCartCoupons = ( context = '' ): StoreCartCoupon => {
- const { cartCoupons, cartIsLoading } = useStoreCart();
- const { createErrorNotice } = useDispatch( 'core/notices' );
- const { createNotice } = useDispatch( 'core/notices' );
- const { setValidationErrors } = useDispatch( VALIDATION_STORE_KEY );
-
- const {
- isApplyingCoupon,
- isRemovingCoupon,
- }: Pick< StoreCartCoupon, 'isApplyingCoupon' | 'isRemovingCoupon' > =
- useSelect(
- ( select ) => {
- const store = select( CART_STORE_KEY );
-
- return {
- isApplyingCoupon: store.isApplyingCoupon(),
- isRemovingCoupon: store.isRemovingCoupon(),
- };
- },
- [ createErrorNotice, createNotice ]
- );
-
- const { applyCoupon, removeCoupon } = useDispatch( CART_STORE_KEY );
-
- const applyCouponWithNotices = ( couponCode: string ) => {
- return applyCoupon( couponCode )
- .then( () => {
- if (
- applyCheckoutFilter( {
- filterName: 'showApplyCouponNotice',
- defaultValue: true,
- arg: { couponCode, context },
- } )
- ) {
- createNotice(
- 'info',
- sprintf(
- /* translators: %s coupon code. */
- __(
- 'Coupon code "%s" has been applied to your cart.',
- 'woo-gutenberg-products-block'
- ),
- couponCode
- ),
- {
- id: 'coupon-form',
- type: 'snackbar',
- context,
- }
- );
- }
- return Promise.resolve( true );
- } )
- .catch( ( error ) => {
- setValidationErrors( {
- coupon: {
- message: decodeEntities( error.message ),
- hidden: false,
- },
- } );
- return Promise.resolve( false );
- } );
- };
-
- const removeCouponWithNotices = ( couponCode: string ) => {
- return removeCoupon( couponCode )
- .then( () => {
- if (
- applyCheckoutFilter( {
- filterName: 'showRemoveCouponNotice',
- defaultValue: true,
- arg: { couponCode, context },
- } )
- ) {
- createNotice(
- 'info',
- sprintf(
- /* translators: %s coupon code. */
- __(
- 'Coupon code "%s" has been removed from your cart.',
- 'woo-gutenberg-products-block'
- ),
- couponCode
- ),
- {
- id: 'coupon-form',
- type: 'snackbar',
- context,
- }
- );
- }
- return Promise.resolve( true );
- } )
- .catch( ( error ) => {
- createErrorNotice( error.message, {
- id: 'coupon-form',
- context,
- } );
- return Promise.resolve( false );
- } );
- };
-
- return {
- appliedCoupons: cartCoupons,
- isLoading: cartIsLoading,
- applyCoupon: applyCouponWithNotices,
- removeCoupon: removeCouponWithNotices,
- isApplyingCoupon,
- isRemovingCoupon,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-event-listeners.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-event-listeners.ts
deleted file mode 100644
index 3cdb3508..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-event-listeners.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * External dependencies
- */
-import { useEffect } from '@wordpress/element';
-import { CART_STORE_KEY } from '@woocommerce/block-data';
-import { dispatch } from '@wordpress/data';
-import {
- translateJQueryEventToNative,
- getNavigationType,
-} from '@woocommerce/base-utils';
-
-interface StoreCartListenersType {
- // Counts the number of consumers of this hook so we can remove listeners when no longer needed.
- count: number;
- // Function to remove all registered listeners.
- remove: () => void;
-}
-
-interface CartDataCustomEvent extends Event {
- detail?:
- | {
- preserveCartData?: boolean | undefined;
- }
- | undefined;
-}
-
-declare global {
- interface Window {
- wcBlocksStoreCartListeners: StoreCartListenersType;
- }
-}
-
-const refreshData = ( event: CartDataCustomEvent ): void => {
- const eventDetail = event?.detail;
- if ( ! eventDetail || ! eventDetail.preserveCartData ) {
- dispatch( CART_STORE_KEY ).invalidateResolutionForStore();
- }
-};
-
-/**
- * Refreshes data if the pageshow event is triggered by the browser history.
- *
- * - In Chrome, `back_forward` will be returned by getNavigationType() when the browser history is used.
- * - In safari we instead need to use `event.persisted` which is true when page cache is used.
- */
-const refreshCachedCartData = ( event: PageTransitionEvent ): void => {
- if ( event?.persisted || getNavigationType() === 'back_forward' ) {
- dispatch( CART_STORE_KEY ).invalidateResolutionForStore();
- }
-};
-
-const setUp = (): void => {
- if ( ! window.wcBlocksStoreCartListeners ) {
- window.wcBlocksStoreCartListeners = {
- count: 0,
- remove: () => void null,
- };
- }
-};
-
-// Checks if there are any listeners registered.
-const hasListeners = (): boolean => {
- return window.wcBlocksStoreCartListeners?.count > 0;
-};
-
-// Add listeners if there are none, otherwise just increment the count.
-const addListeners = (): void => {
- setUp();
-
- if ( hasListeners() ) {
- window.wcBlocksStoreCartListeners.count++;
- return;
- }
- document.body.addEventListener( 'wc-blocks_added_to_cart', refreshData );
- document.body.addEventListener(
- 'wc-blocks_removed_from_cart',
- refreshData
- );
- window.addEventListener( 'pageshow', refreshCachedCartData );
-
- const removeJQueryAddedToCartEvent = translateJQueryEventToNative(
- 'added_to_cart',
- `wc-blocks_added_to_cart`
- ) as () => () => void;
- const removeJQueryRemovedFromCartEvent = translateJQueryEventToNative(
- 'removed_from_cart',
- `wc-blocks_removed_from_cart`
- ) as () => () => void;
-
- window.wcBlocksStoreCartListeners.count = 1;
- window.wcBlocksStoreCartListeners.remove = () => {
- document.body.removeEventListener(
- 'wc-blocks_added_to_cart',
- refreshData
- );
- document.body.removeEventListener(
- 'wc-blocks_removed_from_cart',
- refreshData
- );
- window.removeEventListener( 'pageshow', refreshCachedCartData );
- removeJQueryAddedToCartEvent();
- removeJQueryRemovedFromCartEvent();
- };
-};
-
-const removeListeners = (): void => {
- if ( window.wcBlocksStoreCartListeners.count === 1 ) {
- window.wcBlocksStoreCartListeners.remove();
- }
- window.wcBlocksStoreCartListeners.count--;
-};
-
-/**
- * This will keep track of jQuery and DOM events that invalidate the store resolution.
- */
-export const useStoreCartEventListeners = (): void => {
- useEffect( () => {
- addListeners();
- return removeListeners;
- }, [] );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-item-quantity.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-item-quantity.ts
deleted file mode 100644
index 5998e7a3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart-item-quantity.ts
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * External dependencies
- */
-import { useSelect, useDispatch } from '@wordpress/data';
-import { useCallback, useState, useEffect } from '@wordpress/element';
-import {
- CART_STORE_KEY,
- CHECKOUT_STORE_KEY,
- processErrorResponse,
-} from '@woocommerce/block-data';
-import { useDebounce } from 'use-debounce';
-import { usePrevious } from '@woocommerce/base-hooks';
-import {
- CartItem,
- StoreCartItemQuantity,
- isNumber,
- isObject,
- isString,
- objectHasProp,
-} from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import { useStoreCart } from './use-store-cart';
-
-/**
- * Ensures the object passed has props key: string and quantity: number
- */
-const cartItemHasQuantityAndKey = (
- cartItem: unknown /* Object that may have quantity and key */
-): cartItem is Partial< CartItem > =>
- isObject( cartItem ) &&
- objectHasProp( cartItem, 'key' ) &&
- objectHasProp( cartItem, 'quantity' ) &&
- isString( cartItem.key ) &&
- isNumber( cartItem.quantity );
-
-/**
- * This is a custom hook for loading the Store API /cart/ endpoint and actions for removing or changing item quantity.
- *
- * @see https://github.com/woocommerce/woocommerce-gutenberg-products-block/tree/trunk/src/RestApi/StoreApi
- *
- * @param {CartItem} cartItem The cartItem to get quantity info from and will have quantity updated on.
- * @return {StoreCartItemQuantity} An object exposing data and actions relating to cart items.
- */
-export const useStoreCartItemQuantity = (
- cartItem: CartItem | Record< string, unknown >
-): StoreCartItemQuantity => {
- const verifiedCartItem = { key: '', quantity: 1 };
-
- if ( cartItemHasQuantityAndKey( cartItem ) ) {
- verifiedCartItem.key = cartItem.key;
- verifiedCartItem.quantity = cartItem.quantity;
- }
- const { key: cartItemKey = '', quantity: cartItemQuantity = 1 } =
- verifiedCartItem;
- const { cartErrors } = useStoreCart();
- const { __internalIncrementCalculating, __internalDecrementCalculating } =
- useDispatch( CHECKOUT_STORE_KEY );
-
- // Store quantity in hook state. This is used to keep the UI updated while server request is updated.
- const [ quantity, setQuantity ] = useState< number >( cartItemQuantity );
- const [ debouncedQuantity ] = useDebounce< number >( quantity, 400 );
- const previousDebouncedQuantity = usePrevious( debouncedQuantity );
- const { removeItemFromCart, changeCartItemQuantity } =
- useDispatch( CART_STORE_KEY );
-
- // Update local state when server updates.
- useEffect( () => setQuantity( cartItemQuantity ), [ cartItemQuantity ] );
-
- // Track when things are already pending updates.
- const isPending = useSelect(
- ( select ) => {
- if ( ! cartItemKey ) {
- return {
- quantity: false,
- delete: false,
- };
- }
- const store = select( CART_STORE_KEY );
- return {
- quantity: store.isItemPendingQuantity( cartItemKey ),
- delete: store.isItemPendingDelete( cartItemKey ),
- };
- },
- [ cartItemKey ]
- );
-
- const removeItem = useCallback( () => {
- if ( cartItemKey ) {
- return removeItemFromCart( cartItemKey ).catch( ( error ) => {
- processErrorResponse( error );
- } );
- }
- return Promise.resolve( false );
- }, [ cartItemKey, removeItemFromCart ] );
-
- // Observe debounced quantity value, fire action to update server on change.
- useEffect( () => {
- if (
- cartItemKey &&
- isNumber( previousDebouncedQuantity ) &&
- Number.isFinite( previousDebouncedQuantity ) &&
- previousDebouncedQuantity !== debouncedQuantity
- ) {
- changeCartItemQuantity( cartItemKey, debouncedQuantity ).catch(
- ( error ) => {
- processErrorResponse( error );
- }
- );
- }
- }, [
- cartItemKey,
- changeCartItemQuantity,
- debouncedQuantity,
- previousDebouncedQuantity,
- ] );
-
- useEffect( () => {
- if ( isPending.delete ) {
- __internalIncrementCalculating();
- } else {
- __internalDecrementCalculating();
- }
- return () => {
- if ( isPending.delete ) {
- __internalDecrementCalculating();
- }
- };
- }, [
- __internalDecrementCalculating,
- __internalIncrementCalculating,
- isPending.delete,
- ] );
-
- useEffect( () => {
- if ( isPending.quantity || debouncedQuantity !== quantity ) {
- __internalIncrementCalculating();
- } else {
- __internalDecrementCalculating();
- }
- return () => {
- if ( isPending.quantity || debouncedQuantity !== quantity ) {
- __internalDecrementCalculating();
- }
- };
- }, [
- __internalIncrementCalculating,
- __internalDecrementCalculating,
- isPending.quantity,
- debouncedQuantity,
- quantity,
- ] );
-
- return {
- isPendingDelete: isPending.delete,
- quantity,
- setItemQuantity: setQuantity,
- removeItem,
- cartItemQuantityErrors: cartErrors,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart.ts
deleted file mode 100644
index 135de0dd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/cart/use-store-cart.ts
+++ /dev/null
@@ -1,256 +0,0 @@
-/** @typedef { import('@woocommerce/type-defs/hooks').StoreCart } StoreCart */
-
-/**
- * External dependencies
- */
-import fastDeepEqual from 'fast-deep-equal/es6';
-import { useRef } from '@wordpress/element';
-import {
- CART_STORE_KEY as storeKey,
- EMPTY_CART_COUPONS,
- EMPTY_CART_ITEMS,
- EMPTY_CART_CROSS_SELLS,
- EMPTY_CART_FEES,
- EMPTY_CART_ITEM_ERRORS,
- EMPTY_CART_ERRORS,
- EMPTY_SHIPPING_RATES,
- EMPTY_TAX_LINES,
- EMPTY_PAYMENT_METHODS,
- EMPTY_PAYMENT_REQUIREMENTS,
- EMPTY_EXTENSIONS,
-} from '@woocommerce/block-data';
-import { useSelect } from '@wordpress/data';
-import { decodeEntities } from '@wordpress/html-entities';
-import type {
- StoreCart,
- CartResponseTotals,
- CartResponseFeeItem,
- CartResponseBillingAddress,
- CartResponseShippingAddress,
- CartResponseCouponItem,
- CartResponseCoupons,
-} from '@woocommerce/types';
-import { emptyHiddenAddressFields } from '@woocommerce/base-utils';
-
-/**
- * Internal dependencies
- */
-import { useEditorContext } from '../../providers/editor-context';
-import { useStoreCartEventListeners } from './use-store-cart-event-listeners';
-
-declare module '@wordpress/html-entities' {
- // eslint-disable-next-line @typescript-eslint/no-shadow
- export function decodeEntities< T >( coupon: T ): T;
-}
-const defaultShippingAddress: CartResponseShippingAddress = {
- first_name: '',
- last_name: '',
- company: '',
- address_1: '',
- address_2: '',
- city: '',
- state: '',
- postcode: '',
- country: '',
- phone: '',
-};
-
-const defaultBillingAddress: CartResponseBillingAddress = {
- ...defaultShippingAddress,
- email: '',
-};
-
-const defaultCartTotals: CartResponseTotals = {
- total_items: '',
- total_items_tax: '',
- total_fees: '',
- total_fees_tax: '',
- total_discount: '',
- total_discount_tax: '',
- total_shipping: '',
- total_shipping_tax: '',
- total_price: '',
- total_tax: '',
- tax_lines: EMPTY_TAX_LINES,
- currency_code: '',
- currency_symbol: '',
- currency_minor_unit: 2,
- currency_decimal_separator: '',
- currency_thousand_separator: '',
- currency_prefix: '',
- currency_suffix: '',
-};
-
-const decodeValues = (
- object: Record< string, unknown >
-): Record< string, unknown > =>
- Object.fromEntries(
- Object.entries( object ).map( ( [ key, value ] ) => [
- key,
- decodeEntities( value ),
- ] )
- );
-
-/**
- * @constant
- * @type {StoreCart} Object containing cart data.
- */
-export const defaultCartData: StoreCart = {
- cartCoupons: EMPTY_CART_COUPONS,
- cartItems: EMPTY_CART_ITEMS,
- cartFees: EMPTY_CART_FEES,
- cartItemsCount: 0,
- cartItemsWeight: 0,
- crossSellsProducts: EMPTY_CART_CROSS_SELLS,
- cartNeedsPayment: true,
- cartNeedsShipping: true,
- cartItemErrors: EMPTY_CART_ITEM_ERRORS,
- cartTotals: defaultCartTotals,
- cartIsLoading: true,
- cartErrors: EMPTY_CART_ERRORS,
- billingAddress: defaultBillingAddress,
- shippingAddress: defaultShippingAddress,
- shippingRates: EMPTY_SHIPPING_RATES,
- isLoadingRates: false,
- cartHasCalculatedShipping: false,
- paymentMethods: EMPTY_PAYMENT_METHODS,
- paymentRequirements: EMPTY_PAYMENT_REQUIREMENTS,
- receiveCart: () => undefined,
- receiveCartContents: () => undefined,
- extensions: EMPTY_EXTENSIONS,
-};
-
-/**
- * This is a custom hook that is wired up to the `wc/store/cart` data
- * store.
- *
- * @param {Object} options An object declaring the various
- * collection arguments.
- * @param {boolean} options.shouldSelect If false, the previous results will be
- * returned and internal selects will not
- * fire.
- *
- * @return {StoreCart} Object containing cart data.
- */
-
-export const useStoreCart = (
- options: { shouldSelect: boolean } = { shouldSelect: true }
-): StoreCart => {
- const { isEditor, previewData } = useEditorContext();
- const previewCart = previewData?.previewCart;
- const { shouldSelect } = options;
- const currentResults = useRef();
-
- // This will keep track of jQuery and DOM events that invalidate the store resolution.
- useStoreCartEventListeners();
-
- const results: StoreCart = useSelect(
- ( select, { dispatch } ) => {
- if ( ! shouldSelect ) {
- return defaultCartData;
- }
-
- if ( isEditor ) {
- return {
- cartCoupons: previewCart.coupons,
- cartItems: previewCart.items,
- crossSellsProducts: previewCart.cross_sells,
- cartFees: previewCart.fees,
- cartItemsCount: previewCart.items_count,
- cartItemsWeight: previewCart.items_weight,
- cartNeedsPayment: previewCart.needs_payment,
- cartNeedsShipping: previewCart.needs_shipping,
- cartItemErrors: EMPTY_CART_ITEM_ERRORS,
- cartTotals: previewCart.totals,
- cartIsLoading: false,
- cartErrors: EMPTY_CART_ERRORS,
- billingData: defaultBillingAddress,
- billingAddress: defaultBillingAddress,
- shippingAddress: defaultShippingAddress,
- extensions: EMPTY_EXTENSIONS,
- shippingRates: previewCart.shipping_rates,
- isLoadingRates: false,
- cartHasCalculatedShipping:
- previewCart.has_calculated_shipping,
- paymentRequirements: previewCart.paymentRequirements,
- receiveCart:
- typeof previewCart?.receiveCart === 'function'
- ? previewCart.receiveCart
- : () => undefined,
- receiveCartContents:
- typeof previewCart?.receiveCartContents === 'function'
- ? previewCart.receiveCartContents
- : () => undefined,
- };
- }
-
- const store = select( storeKey );
- const cartData = store.getCartData();
- const cartErrors = store.getCartErrors();
- const cartTotals = store.getCartTotals();
- const cartIsLoading =
- ! store.hasFinishedResolution( 'getCartData' );
-
- const isLoadingRates = store.isCustomerDataUpdating();
- const { receiveCart, receiveCartContents } = dispatch( storeKey );
- const billingAddress = decodeValues( cartData.billingAddress );
- const shippingAddress = cartData.needsShipping
- ? decodeValues( cartData.shippingAddress )
- : billingAddress;
- const cartFees =
- cartData.fees.length > 0
- ? cartData.fees.map( ( fee: CartResponseFeeItem ) =>
- decodeValues( fee )
- )
- : EMPTY_CART_FEES;
-
- // Add a text property to the coupon to allow extensions to modify
- // the text used to display the coupon, without affecting the
- // functionality when it comes to removing the coupon.
- const cartCoupons: CartResponseCoupons =
- cartData.coupons.length > 0
- ? cartData.coupons.map(
- ( coupon: CartResponseCouponItem ) => ( {
- ...coupon,
- label: coupon.code,
- } )
- )
- : EMPTY_CART_COUPONS;
-
- return {
- cartCoupons,
- cartItems: cartData.items,
- crossSellsProducts: cartData.crossSells,
- cartFees,
- cartItemsCount: cartData.itemsCount,
- cartItemsWeight: cartData.itemsWeight,
- cartNeedsPayment: cartData.needsPayment,
- cartNeedsShipping: cartData.needsShipping,
- cartItemErrors: cartData.errors,
- cartTotals,
- cartIsLoading,
- cartErrors,
- billingData: emptyHiddenAddressFields( billingAddress ),
- billingAddress: emptyHiddenAddressFields( billingAddress ),
- shippingAddress: emptyHiddenAddressFields( shippingAddress ),
- extensions: cartData.extensions,
- shippingRates: cartData.shippingRates,
- isLoadingRates,
- cartHasCalculatedShipping: cartData.hasCalculatedShipping,
- paymentRequirements: cartData.paymentRequirements,
- receiveCart,
- receiveCartContents,
- };
- },
- [ shouldSelect ]
- );
-
- if (
- ! currentResults.current ||
- ! fastDeepEqual( currentResults.current, results )
- ) {
- currentResults.current = results;
- }
-
- return currentResults.current;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/index.ts
deleted file mode 100644
index e47d0e13..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './use-collection-data';
-export * from './use-collection-header';
-export * from './use-collection';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/test/use-collection.jsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/test/use-collection.jsx
deleted file mode 100644
index c64cb1e4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/test/use-collection.jsx
+++ /dev/null
@@ -1,301 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-import { createRegistry, RegistryProvider } from '@wordpress/data';
-import { Component as ReactComponent } from '@wordpress/element';
-import { COLLECTIONS_STORE_KEY as storeKey } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { useCollection } from '../use-collection';
-
-jest.mock( '@woocommerce/block-data', () => ( {
- __esModule: true,
- COLLECTIONS_STORE_KEY: 'test/store',
-} ) );
-
-class TestErrorBoundary extends ReactComponent {
- constructor( props ) {
- super( props );
- this.state = { hasError: false, error: {} };
- }
- static getDerivedStateFromError( error ) {
- // Update state so the next render will show the fallback UI.
- return { hasError: true, error };
- }
-
- render() {
- if ( this.state.hasError ) {
- return
;
- }
-
- return this.props.children;
- }
-}
-
-describe( 'useCollection', () => {
- let registry, mocks, renderer;
- const getProps = ( testRenderer ) => {
- const { results, isLoading } =
- testRenderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
- return {
- results,
- isLoading,
- };
- };
-
- const getWrappedComponents = ( Component, props ) => (
-
-
-
-
-
- );
-
- const getTestComponent =
- () =>
- ( { options } ) => {
- const items = useCollection( options );
- return
;
- };
-
- const setUpMocks = () => {
- mocks = {
- selectors: {
- getCollectionError: jest.fn().mockReturnValue( false ),
- getCollection: jest
- .fn()
- .mockImplementation( () => ( { foo: 'bar' } ) ),
- hasFinishedResolution: jest.fn().mockReturnValue( true ),
- },
- };
- registry.registerStore( storeKey, {
- reducer: () => ( {} ),
- selectors: mocks.selectors,
- } );
- };
-
- beforeEach( () => {
- registry = createRegistry();
- mocks = {};
- renderer = null;
- setUpMocks();
- } );
- it(
- 'should throw an error if an options object is provided without ' +
- 'a namespace property',
- () => {
- const TestComponent = getTestComponent();
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent, {
- options: {
- resourceName: 'products',
- query: { bar: 'foo' },
- },
- } )
- );
- } );
- //eslint-disable-next-line testing-library/await-async-query
- const props = renderer.root.findByType( 'div' ).props;
- expect( props[ 'data-error' ].message ).toMatch( /options object/ );
- expect( console ).toHaveErrored( /your React components:/ );
- renderer.unmount();
- }
- );
- it(
- 'should throw an error if an options object is provided without ' +
- 'a resourceName property',
- () => {
- const TestComponent = getTestComponent();
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- query: { bar: 'foo' },
- },
- } )
- );
- } );
- //eslint-disable-next-line testing-library/await-async-query
- const props = renderer.root.findByType( 'div' ).props;
- expect( props[ 'data-error' ].message ).toMatch( /options object/ );
- expect( console ).toHaveErrored( /your React components:/ );
- renderer.unmount();
- }
- );
- it(
- 'should return expected behaviour for equivalent query on props ' +
- 'across renders',
- () => {
- const TestComponent = getTestComponent();
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'products',
- query: { bar: 'foo' },
- },
- } )
- );
- } );
- const { results } = getProps( renderer );
- // rerender
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'products',
- query: { bar: 'foo' },
- },
- } )
- );
- } );
- // re-render should result in same products object because although
- // query-state is a different instance, it's still equivalent.
- const { results: newResults } = getProps( renderer );
- expect( newResults ).toBe( results );
- // now let's change the query passed through to verify new object
- // is created.
- // remember this won't actually change the results because the mock
- // selector is returning an equivalent object when it is called,
- // however it SHOULD be a new object instance.
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'products',
- query: { foo: 'bar' },
- },
- } )
- );
- } );
- const { results: resultsVerification } = getProps( renderer );
- expect( resultsVerification ).not.toBe( results );
- expect( resultsVerification ).toEqual( results );
- renderer.unmount();
- }
- );
- it(
- 'should return expected behaviour for equivalent resourceValues on' +
- ' props across renders',
- () => {
- const TestComponent = getTestComponent();
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'products',
- resourceValues: [ 10, 20 ],
- },
- } )
- );
- } );
- const { results } = getProps( renderer );
- // rerender
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'products',
- resourceValues: [ 10, 20 ],
- },
- } )
- );
- } );
- // re-render should result in same products object because although
- // query-state is a different instance, it's still equivalent.
- const { results: newResults } = getProps( renderer );
- expect( newResults ).toBe( results );
- // now let's change the query passed through to verify new object
- // is created.
- // remember this won't actually change the results because the mock
- // selector is returning an equivalent object when it is called,
- // however it SHOULD be a new object instance.
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'products',
- resourceValues: [ 20, 10 ],
- },
- } )
- );
- } );
- const { results: resultsVerification } = getProps( renderer );
- expect( resultsVerification ).not.toBe( results );
- expect( resultsVerification ).toEqual( results );
- renderer.unmount();
- }
- );
- it( 'should return previous query results if `shouldSelect` is false', () => {
- mocks.selectors.getCollection.mockImplementation(
- ( state, ...args ) => {
- return args;
- }
- );
- const TestComponent = getTestComponent();
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'products',
- resourceValues: [ 10, 20 ],
- },
- } )
- );
- } );
- const { results } = getProps( renderer );
- // rerender but with shouldSelect to false
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'productsb',
- resourceValues: [ 10, 30 ],
- shouldSelect: false,
- },
- } )
- );
- } );
- const { results: results2 } = getProps( renderer );
- expect( results2 ).toBe( results );
- // expect 2 calls because internally, useSelect invokes callback twice
- // on mount.
- expect( mocks.selectors.getCollection ).toHaveBeenCalledTimes( 2 );
-
- // rerender again but set shouldSelect to true again and we should see
- // new results
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- options: {
- namespace: 'test/store',
- resourceName: 'productsb',
- resourceValues: [ 10, 30 ],
- shouldSelect: true,
- },
- } )
- );
- } );
- const { results: results3 } = getProps( renderer );
- expect( results3 ).not.toEqual( results );
- expect( results3 ).toEqual( [
- 'test/store',
- 'productsb',
- {},
- [ 10, 30 ],
- ] );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-data.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-data.ts
deleted file mode 100644
index 07bb5afd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-data.ts
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * External dependencies
- */
-import { useState, useEffect, useMemo } from '@wordpress/element';
-import { useDebounce } from 'use-debounce';
-import { objectHasProp } from '@woocommerce/types';
-import { sort } from 'fast-sort';
-import { useShallowEqual } from '@woocommerce/base-hooks';
-
-/**
- * Internal dependencies
- */
-import { useQueryStateByContext, useQueryStateByKey } from '../use-query-state';
-import { useCollection } from './use-collection';
-import { useQueryStateContext } from '../../providers/query-state-context';
-
-const buildCollectionDataQuery = (
- collectionDataQueryState: Record< string, unknown >
-) => {
- const query = collectionDataQueryState;
-
- if (
- Array.isArray( collectionDataQueryState.calculate_attribute_counts )
- ) {
- query.calculate_attribute_counts = sort(
- collectionDataQueryState.calculate_attribute_counts.map(
- ( { taxonomy, queryType } ) => {
- return {
- taxonomy,
- query_type: queryType,
- };
- }
- )
- ).asc( [ 'taxonomy', 'query_type' ] );
- }
-
- return query;
-};
-
-interface UseCollectionDataProps {
- queryAttribute?: {
- taxonomy: string;
- queryType: string;
- };
- queryPrices?: boolean;
- queryStock?: boolean;
- queryRating?: boolean;
- queryState: Record< string, unknown >;
- isEditor?: boolean;
-}
-
-export const useCollectionData = ( {
- queryAttribute,
- queryPrices,
- queryStock,
- queryRating,
- queryState,
- isEditor = false,
-}: UseCollectionDataProps ) => {
- let context = useQueryStateContext();
- context = `${ context }-collection-data`;
-
- const [ collectionDataQueryState ] = useQueryStateByContext( context );
- const [ calculateAttributesQueryState, setCalculateAttributesQueryState ] =
- useQueryStateByKey( 'calculate_attribute_counts', [], context );
- const [ calculatePriceRangeQueryState, setCalculatePriceRangeQueryState ] =
- useQueryStateByKey( 'calculate_price_range', null, context );
- const [
- calculateStockStatusQueryState,
- setCalculateStockStatusQueryState,
- ] = useQueryStateByKey( 'calculate_stock_status_counts', null, context );
- const [ calculateRatingQueryState, setCalculateRatingQueryState ] =
- useQueryStateByKey( 'calculate_rating_counts', null, context );
-
- const currentQueryAttribute = useShallowEqual( queryAttribute || {} );
- const currentQueryPrices = useShallowEqual( queryPrices );
- const currentQueryStock = useShallowEqual( queryStock );
- const currentQueryRating = useShallowEqual( queryRating );
-
- useEffect( () => {
- if (
- typeof currentQueryAttribute === 'object' &&
- Object.keys( currentQueryAttribute ).length
- ) {
- const foundAttribute = calculateAttributesQueryState.find(
- ( attribute ) => {
- return (
- objectHasProp( currentQueryAttribute, 'taxonomy' ) &&
- attribute.taxonomy === currentQueryAttribute.taxonomy
- );
- }
- );
-
- if ( ! foundAttribute ) {
- setCalculateAttributesQueryState( [
- ...calculateAttributesQueryState,
- currentQueryAttribute,
- ] );
- }
- }
- }, [
- currentQueryAttribute,
- calculateAttributesQueryState,
- setCalculateAttributesQueryState,
- ] );
-
- useEffect( () => {
- if (
- calculatePriceRangeQueryState !== currentQueryPrices &&
- currentQueryPrices !== undefined
- ) {
- setCalculatePriceRangeQueryState( currentQueryPrices );
- }
- }, [
- currentQueryPrices,
- setCalculatePriceRangeQueryState,
- calculatePriceRangeQueryState,
- ] );
-
- useEffect( () => {
- if (
- calculateStockStatusQueryState !== currentQueryStock &&
- currentQueryStock !== undefined
- ) {
- setCalculateStockStatusQueryState( currentQueryStock );
- }
- }, [
- currentQueryStock,
- setCalculateStockStatusQueryState,
- calculateStockStatusQueryState,
- ] );
-
- useEffect( () => {
- if (
- calculateRatingQueryState !== currentQueryRating &&
- currentQueryRating !== undefined
- ) {
- setCalculateRatingQueryState( currentQueryRating );
- }
- }, [
- currentQueryRating,
- setCalculateRatingQueryState,
- calculateRatingQueryState,
- ] );
-
- // Defer the select query so all collection-data query vars can be gathered.
- const [ shouldSelect, setShouldSelect ] = useState( isEditor );
- const [ debouncedShouldSelect ] = useDebounce( shouldSelect, 200 );
-
- if ( ! shouldSelect ) {
- setShouldSelect( true );
- }
-
- const collectionDataQueryVars = useMemo( () => {
- return buildCollectionDataQuery( collectionDataQueryState );
- }, [ collectionDataQueryState ] );
-
- return useCollection( {
- namespace: '/wc/store/v1',
- resourceName: 'products/collection-data',
- query: {
- ...queryState,
- page: undefined,
- per_page: undefined,
- orderby: undefined,
- order: undefined,
- ...collectionDataQueryVars,
- },
- shouldSelect: debouncedShouldSelect,
- } );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-header.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-header.ts
deleted file mode 100644
index 51f1ad2c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection-header.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * External dependencies
- */
-import { COLLECTIONS_STORE_KEY as storeKey } from '@woocommerce/block-data';
-import { useSelect } from '@wordpress/data';
-import { useShallowEqual } from '@woocommerce/base-hooks';
-
-/**
- * Internal dependencies
- */
-import { useCollectionOptions } from '.';
-
-/**
- * This is a custom hook that is wired up to the `wc/store/collections` data
- * store. Given a header key and a collections option object, this will ensure a
- * component is kept up to date with the collection header value matching that
- * query in the store state.
- *
- * @param {string} headerKey Used to indicate which header value to
- * return for the given collection query.
- * Example: `'x-wp-total'`
- * @param {Object} options An object declaring the various
- * collection arguments.
- * @param {string} options.namespace The namespace for the collection.
- * Example: `'/wc/blocks'`
- * @param {string} options.resourceName The name of the resource for the
- * collection. Example:
- * `'products/attributes'`
- * @param {Array} options.resourceValues An array of values (in correct order)
- * that are substituted in the route
- * placeholders for the collection route.
- * Example: `[10, 20]`
- * @param {Object} options.query An object of key value pairs for the
- * query to execute on the collection
- * (optional). Example:
- * `{ order: 'ASC', order_by: 'price' }`
- *
- * @return {Object} This hook will return an object with two properties:
- * - value Whatever value is attached to the specified
- * header.
- * - isLoading A boolean indicating whether the header is
- * loading (true) or not.
- */
-
-export const useCollectionHeader = (
- headerKey: string,
- options: Omit< useCollectionOptions, 'shouldSelect' >
-): {
- value: unknown;
- isLoading: boolean;
-} => {
- const {
- namespace,
- resourceName,
- resourceValues = [],
- query = {},
- } = options;
- if ( ! namespace || ! resourceName ) {
- throw new Error(
- 'The options object must have valid values for the namespace and ' +
- 'the resource name properties.'
- );
- }
- // ensure we feed the previous reference if it's equivalent
- const currentQuery = useShallowEqual( query );
- const currentResourceValues = useShallowEqual( resourceValues );
- const { value, isLoading = true } = useSelect(
- ( select ) => {
- const store = select( storeKey );
- // filter out query if it is undefined.
- const args = [
- headerKey,
- namespace,
- resourceName,
- currentQuery,
- currentResourceValues,
- ];
- return {
- value: store.getCollectionHeader( ...args ),
- isLoading: store.hasFinishedResolution(
- 'getCollectionHeader',
- args
- ),
- };
- },
- [
- headerKey,
- namespace,
- resourceName,
- currentResourceValues,
- currentQuery,
- ]
- );
- return {
- value,
- isLoading,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection.ts
deleted file mode 100644
index a616f33e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/collections/use-collection.ts
+++ /dev/null
@@ -1,126 +0,0 @@
-/**
- * External dependencies
- */
-import { COLLECTIONS_STORE_KEY as storeKey } from '@woocommerce/block-data';
-import { useSelect } from '@wordpress/data';
-import { useRef } from '@wordpress/element';
-import { useShallowEqual, useThrowError } from '@woocommerce/base-hooks';
-import { isError } from '@woocommerce/types';
-
-/**
- * This is a custom hook that is wired up to the `wc/store/collections` data
- * store. Given a collections option object, this will ensure a component is
- * kept up to date with the collection matching that query in the store state.
- *
- * @throws {Object} Throws an exception object if there was a problem with the
- * API request, to be picked up by BlockErrorBoundry.
- *
- * @param {Object} options An object declaring the various
- * collection arguments.
- * @param {string} options.namespace The namespace for the collection.
- * Example: `'/wc/blocks'`
- * @param {string} options.resourceName The name of the resource for the
- * collection. Example:
- * `'products/attributes'`
- * @param {Array} [options.resourceValues] An array of values (in correct order)
- * that are substituted in the route
- * placeholders for the collection route.
- * Example: `[10, 20]`
- * @param {Object} [options.query] An object of key value pairs for the
- * query to execute on the collection
- * Example:
- * `{ order: 'ASC', order_by: 'price' }`
- * @param {boolean} [options.shouldSelect] If false, the previous results will be
- * returned and internal selects will not
- * fire.
- *
- * @return {Object} This hook will return an object with two properties:
- * - results An array of collection items returned.
- * - isLoading A boolean indicating whether the collection is
- * loading (true) or not.
- */
-
-export interface useCollectionOptions {
- namespace: string;
- resourceName: string;
- resourceValues?: number[];
- query?: Record< string, unknown >;
- shouldSelect?: boolean;
- isEditor?: boolean;
-}
-
-export const useCollection = < T >(
- options: useCollectionOptions
-): {
- results: T[];
- isLoading: boolean;
-} => {
- const {
- namespace,
- resourceName,
- resourceValues = [],
- query = {},
- shouldSelect = true,
- } = options;
- if ( ! namespace || ! resourceName ) {
- throw new Error(
- 'The options object must have valid values for the namespace and ' +
- 'the resource properties.'
- );
- }
- const currentResults = useRef< { results: T[]; isLoading: boolean } >( {
- results: [],
- isLoading: true,
- } );
- // ensure we feed the previous reference if it's equivalent
- const currentQuery = useShallowEqual( query );
- const currentResourceValues = useShallowEqual( resourceValues );
- const throwError = useThrowError();
- const results = useSelect(
- ( select ) => {
- if ( ! shouldSelect ) {
- return null;
- }
-
- const store = select( storeKey );
- const args = [
- namespace,
- resourceName,
- currentQuery,
- currentResourceValues,
- ];
- const error = store.getCollectionError( ...args );
-
- if ( error ) {
- if ( isError( error ) ) {
- throwError( error );
- } else {
- throw new Error(
- 'TypeError: `error` object is not an instance of Error constructor'
- );
- }
- }
-
- return {
- results: store.getCollection< T[] >( ...args ),
- isLoading: ! store.hasFinishedResolution(
- 'getCollection',
- args
- ),
- };
- },
- [
- namespace,
- resourceName,
- currentResourceValues,
- currentQuery,
- shouldSelect,
- ]
- );
- // if selector was not bailed, then update current results. Otherwise return
- // previous results
- if ( results !== null ) {
- currentResults.current = results;
- }
- return currentResults.current;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/index.js
deleted file mode 100644
index 7c58ba2d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-export * from './cart';
-export * from './collections';
-export * from './shipping';
-export * from './payment-methods';
-export * from './use-store-events';
-export * from './use-query-state';
-export * from './use-store-products';
-export * from './use-store-add-to-cart';
-export * from './use-customer-data';
-export * from './use-checkout-address';
-export * from './use-checkout-submit';
-export * from './use-checkout-extension-data';
-export * from './use-show-shipping-total-warning';
-export * from './use-validation';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/index.js
deleted file mode 100644
index f3db97b0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export { usePaymentMethodInterface } from './use-payment-method-interface';
-export * from './use-payment-methods';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/test/use-payment-method-interface.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/test/use-payment-method-interface.js
deleted file mode 100644
index de6323dd..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/test/use-payment-method-interface.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * Internal dependencies
- */
-import { prepareTotalItems } from '../utils';
-
-describe( 'prepareTotalItems', () => {
- const fixture = {
- total_items: '200',
- total_items_tax: '20',
- total_fees: '100',
- total_fees_tax: '10',
- total_discount: '350',
- total_discount_tax: '50',
- total_shipping: '50',
- total_shipping_tax: '5',
- total_tax: '30',
- };
- const expected = [
- {
- key: 'total_items',
- label: 'Subtotal:',
- value: 200,
- valueWithTax: 220,
- },
- {
- key: 'total_fees',
- label: 'Fees:',
- value: 100,
- valueWithTax: 110,
- },
- {
- key: 'total_discount',
- label: 'Discount:',
- value: 350,
- valueWithTax: 400,
- },
- {
- key: 'total_tax',
- label: 'Taxes:',
- value: 30,
- valueWithTax: 30,
- },
- ];
- const expectedWithShipping = [
- ...expected,
- {
- key: 'total_shipping',
- label: 'Shipping:',
- value: 50,
- valueWithTax: 55,
- },
- ];
- it( 'returns expected values when needsShipping is false', () => {
- expect( prepareTotalItems( fixture, false ) ).toEqual( expected );
- } );
- it( 'returns expected values when needsShipping is true', () => {
- expect( prepareTotalItems( fixture, true ) ).toEqual(
- expectedWithShipping
- );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-method-interface.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-method-interface.ts
deleted file mode 100644
index ac45027d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-method-interface.ts
+++ /dev/null
@@ -1,245 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { getCurrencyFromPriceResponse } from '@woocommerce/price-format';
-import { useCallback, useEffect, useRef } from '@wordpress/element';
-import PaymentMethodLabel from '@woocommerce/base-components/cart-checkout/payment-method-label';
-import PaymentMethodIcons from '@woocommerce/base-components/cart-checkout/payment-method-icons';
-import { getSetting } from '@woocommerce/settings';
-import deprecated from '@wordpress/deprecated';
-import LoadingMask from '@woocommerce/base-components/loading-mask';
-import type { PaymentMethodInterface } from '@woocommerce/types';
-import { useSelect, useDispatch } from '@wordpress/data';
-import {
- CHECKOUT_STORE_KEY,
- PAYMENT_STORE_KEY,
- CART_STORE_KEY,
-} from '@woocommerce/block-data';
-import { ValidationInputError } from '@woocommerce/blocks-components';
-
-/**
- * Internal dependencies
- */
-import { useStoreCart } from '../cart/use-store-cart';
-import { useStoreCartCoupons } from '../cart/use-store-cart-coupons';
-import { noticeContexts, responseTypes } from '../../event-emit';
-import { useCheckoutEventsContext } from '../../providers/cart-checkout/checkout-events';
-import { usePaymentEventsContext } from '../../providers/cart-checkout/payment-events';
-import { useShippingDataContext } from '../../providers/cart-checkout/shipping';
-import { prepareTotalItems } from './utils';
-import { useShippingData } from '../shipping/use-shipping-data';
-
-/**
- * Returns am interface to use as payment method props.
- */
-export const usePaymentMethodInterface = (): PaymentMethodInterface => {
- const {
- onCheckoutBeforeProcessing,
- onCheckoutValidationBeforeProcessing,
- onCheckoutAfterProcessingWithSuccess,
- onCheckoutAfterProcessingWithError,
- onSubmit,
- onCheckoutSuccess,
- onCheckoutFail,
- onCheckoutValidation,
- } = useCheckoutEventsContext();
-
- const { isCalculating, isComplete, isIdle, isProcessing, customerId } =
- useSelect( ( select ) => {
- const store = select( CHECKOUT_STORE_KEY );
- return {
- isComplete: store.isComplete(),
- isIdle: store.isIdle(),
- isProcessing: store.isProcessing(),
- customerId: store.getCustomerId(),
- isCalculating: store.isCalculating(),
- };
- } );
- const { paymentStatus, activePaymentMethod, shouldSavePayment } = useSelect(
- ( select ) => {
- const store = select( PAYMENT_STORE_KEY );
-
- return {
- // The paymentStatus is exposed to third parties via the payment method interface so the API must not be changed
- paymentStatus: {
- get isPristine() {
- deprecated( 'isPristine', {
- since: '9.6.0',
- alternative: 'isIdle',
- plugin: 'WooCommerce Blocks',
- link: 'https://github.com/woocommerce/woocommerce-blocks/pull/8110',
- } );
- return store.isPaymentIdle();
- }, // isPristine is the same as isIdle
- isIdle: store.isPaymentIdle(),
- isStarted: store.isExpressPaymentStarted(),
- isProcessing: store.isPaymentProcessing(),
- get isFinished() {
- deprecated( 'isFinished', {
- since: '9.6.0',
- plugin: 'WooCommerce Blocks',
- link: 'https://github.com/woocommerce/woocommerce-blocks/pull/8110',
- } );
- return (
- store.hasPaymentError() || store.isPaymentReady()
- );
- },
- hasError: store.hasPaymentError(),
- get hasFailed() {
- deprecated( 'hasFailed', {
- since: '9.6.0',
- plugin: 'WooCommerce Blocks',
- link: 'https://github.com/woocommerce/woocommerce-blocks/pull/8110',
- } );
- return store.hasPaymentError();
- },
- get isSuccessful() {
- deprecated( 'isSuccessful', {
- since: '9.6.0',
- plugin: 'WooCommerce Blocks',
- link: 'https://github.com/woocommerce/woocommerce-blocks/pull/8110',
- } );
- return store.isPaymentReady();
- },
- isReady: store.isPaymentReady(),
- isDoingExpressPayment: store.isExpressPaymentMethodActive(),
- },
- activePaymentMethod: store.getActivePaymentMethod(),
- shouldSavePayment: store.getShouldSavePaymentMethod(),
- };
- }
- );
-
- const { __internalSetExpressPaymentError } =
- useDispatch( PAYMENT_STORE_KEY );
-
- const { onPaymentProcessing, onPaymentSetup } = usePaymentEventsContext();
- const {
- shippingErrorStatus,
- shippingErrorTypes,
- onShippingRateSuccess,
- onShippingRateFail,
- onShippingRateSelectSuccess,
- onShippingRateSelectFail,
- } = useShippingDataContext();
- const {
- shippingRates,
- isLoadingRates,
- selectedRates,
- isSelectingRate,
- selectShippingRate,
- needsShipping,
- } = useShippingData();
-
- const { billingAddress, shippingAddress } = useSelect( ( select ) =>
- select( CART_STORE_KEY ).getCustomerData()
- );
- const { setShippingAddress } = useDispatch( CART_STORE_KEY );
- const { cartItems, cartFees, cartTotals, extensions } = useStoreCart();
- const { appliedCoupons } = useStoreCartCoupons();
- const currentCartTotals = useRef(
- prepareTotalItems( cartTotals, needsShipping )
- );
- const currentCartTotal = useRef( {
- label: __( 'Total', 'woo-gutenberg-products-block' ),
- value: parseInt( cartTotals.total_price, 10 ),
- } );
-
- useEffect( () => {
- currentCartTotals.current = prepareTotalItems(
- cartTotals,
- needsShipping
- );
- currentCartTotal.current = {
- label: __( 'Total', 'woo-gutenberg-products-block' ),
- value: parseInt( cartTotals.total_price, 10 ),
- };
- }, [ cartTotals, needsShipping ] );
-
- const deprecatedSetExpressPaymentError = useCallback(
- ( errorMessage = '' ) => {
- deprecated(
- 'setExpressPaymentError should only be used by Express Payment Methods (using the provided onError handler).',
- {
- alternative: '',
- plugin: 'woocommerce-gutenberg-products-block',
- link: 'https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4228',
- }
- );
- __internalSetExpressPaymentError( errorMessage );
- },
- [ __internalSetExpressPaymentError ]
- );
-
- return {
- activePaymentMethod,
- billing: {
- appliedCoupons,
- billingAddress,
- billingData: billingAddress,
- cartTotal: currentCartTotal.current,
- cartTotalItems: currentCartTotals.current,
- currency: getCurrencyFromPriceResponse( cartTotals ),
- customerId,
- displayPricesIncludingTax: getSetting(
- 'displayCartPricesIncludingTax',
- false
- ) as boolean,
- },
- cartData: {
- cartItems,
- cartFees,
- extensions,
- },
- checkoutStatus: {
- isCalculating,
- isComplete,
- isIdle,
- isProcessing,
- },
- components: {
- LoadingMask,
- PaymentMethodIcons,
- PaymentMethodLabel,
- ValidationInputError,
- },
- emitResponse: {
- noticeContexts,
- responseTypes,
- },
- eventRegistration: {
- onCheckoutAfterProcessingWithError,
- onCheckoutAfterProcessingWithSuccess,
- onCheckoutBeforeProcessing,
- onCheckoutValidationBeforeProcessing,
- onCheckoutSuccess,
- onCheckoutFail,
- onCheckoutValidation,
- onPaymentProcessing,
- onPaymentSetup,
- onShippingRateFail,
- onShippingRateSelectFail,
- onShippingRateSelectSuccess,
- onShippingRateSuccess,
- },
- onSubmit,
- paymentStatus,
- setExpressPaymentError: deprecatedSetExpressPaymentError,
- shippingData: {
- isSelectingRate,
- needsShipping,
- selectedRates,
- setSelectedRates: selectShippingRate,
- setShippingAddress,
- shippingAddress,
- shippingRates,
- shippingRatesLoading: isLoadingRates,
- },
- shippingStatus: {
- shippingErrorStatus,
- shippingErrorTypes,
- },
- shouldSavePayment,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-methods.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-methods.ts
deleted file mode 100644
index fda8fdc0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/use-payment-methods.ts
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * External dependencies
- */
-import { useShallowEqual } from '@woocommerce/base-hooks';
-import type {
- PaymentMethods,
- ExpressPaymentMethods,
- PaymentMethodConfigInstance,
- ExpressPaymentMethodConfigInstance,
-} from '@woocommerce/types';
-import {
- getPaymentMethods,
- getExpressPaymentMethods,
-} from '@woocommerce/blocks-registry';
-import { useSelect } from '@wordpress/data';
-import { PAYMENT_STORE_KEY } from '@woocommerce/block-data';
-
-interface PaymentMethodState {
- paymentMethods: PaymentMethods;
- isInitialized: boolean;
-}
-interface ExpressPaymentMethodState {
- paymentMethods: ExpressPaymentMethods;
- isInitialized: boolean;
-}
-
-const usePaymentMethodState = (
- express = false
-): PaymentMethodState | ExpressPaymentMethodState => {
- const {
- paymentMethodsInitialized,
- expressPaymentMethodsInitialized,
- availablePaymentMethods,
- availableExpressPaymentMethods,
- } = useSelect( ( select ) => {
- const store = select( PAYMENT_STORE_KEY );
-
- return {
- paymentMethodsInitialized: store.paymentMethodsInitialized(),
- expressPaymentMethodsInitialized:
- store.expressPaymentMethodsInitialized(),
- availableExpressPaymentMethods:
- store.getAvailableExpressPaymentMethods(),
- availablePaymentMethods: store.getAvailablePaymentMethods(),
- };
- } );
-
- const availablePaymentMethodNames = Object.values(
- availablePaymentMethods
- ).map( ( { name } ) => name );
- const availableExpressPaymentMethodNames = Object.values(
- availableExpressPaymentMethods
- ).map( ( { name } ) => name );
-
- const registeredPaymentMethods = getPaymentMethods();
- const registeredExpressPaymentMethods = getExpressPaymentMethods();
-
- // Remove everything from registeredPaymentMethods that is not in availablePaymentMethodNames.
- const paymentMethods = Object.keys( registeredPaymentMethods ).reduce(
- ( acc: Record< string, PaymentMethodConfigInstance >, key ) => {
- if ( availablePaymentMethodNames.includes( key ) ) {
- acc[ key ] = registeredPaymentMethods[ key ];
- }
- return acc;
- },
- {}
- );
- // Remove everything from registeredExpressPaymentMethods that is not in availableExpressPaymentMethodNames.
- const expressPaymentMethods = Object.keys(
- registeredExpressPaymentMethods
- ).reduce(
- ( acc: Record< string, ExpressPaymentMethodConfigInstance >, key ) => {
- if ( availableExpressPaymentMethodNames.includes( key ) ) {
- acc[ key ] = registeredExpressPaymentMethods[ key ];
- }
- return acc;
- },
- {}
- );
-
- const currentPaymentMethods = useShallowEqual( paymentMethods );
- const currentExpressPaymentMethods = useShallowEqual(
- expressPaymentMethods
- );
-
- return {
- paymentMethods: express
- ? currentExpressPaymentMethods
- : currentPaymentMethods,
- isInitialized: express
- ? expressPaymentMethodsInitialized
- : paymentMethodsInitialized,
- };
-};
-
-export const usePaymentMethods = ():
- | PaymentMethodState
- | ExpressPaymentMethodState => usePaymentMethodState( false );
-export const useExpressPaymentMethods = (): ExpressPaymentMethodState =>
- usePaymentMethodState( true );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/utils.ts
deleted file mode 100644
index 2e8f2e08..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/payment-methods/utils.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import {
- CartResponseTotals,
- objectHasProp,
- isString,
-} from '@woocommerce/types';
-
-export interface CartTotalItem {
- key: string;
- label: string;
- value: number;
- valueWithTax: number;
-}
-
-/**
- * Prepares the total items into a shape usable for display as passed on to
- * registered payment methods.
- *
- * @param {Object} totals Current cart total items
- * @param {boolean} needsShipping Whether or not shipping is needed.
- */
-export const prepareTotalItems = (
- totals: CartResponseTotals,
- needsShipping: boolean
-): CartTotalItem[] => {
- const newTotals = [];
-
- const factory = ( label: string, property: string ): CartTotalItem => {
- const taxProperty = property + '_tax';
- const value =
- objectHasProp( totals, property ) && isString( totals[ property ] )
- ? parseInt( totals[ property ] as string, 10 )
- : 0;
- const tax =
- objectHasProp( totals, taxProperty ) &&
- isString( totals[ taxProperty ] )
- ? parseInt( totals[ taxProperty ] as string, 10 )
- : 0;
- return {
- key: property,
- label,
- value,
- valueWithTax: value + tax,
- };
- };
-
- newTotals.push(
- factory(
- __( 'Subtotal:', 'woo-gutenberg-products-block' ),
- 'total_items'
- )
- );
-
- newTotals.push(
- factory( __( 'Fees:', 'woo-gutenberg-products-block' ), 'total_fees' )
- );
-
- newTotals.push(
- factory(
- __( 'Discount:', 'woo-gutenberg-products-block' ),
- 'total_discount'
- )
- );
-
- newTotals.push( {
- key: 'total_tax',
- label: __( 'Taxes:', 'woo-gutenberg-products-block' ),
- value: parseInt( totals.total_tax, 10 ),
- valueWithTax: parseInt( totals.total_tax, 10 ),
- } );
-
- if ( needsShipping ) {
- newTotals.push(
- factory(
- __( 'Shipping:', 'woo-gutenberg-products-block' ),
- 'total_shipping'
- )
- );
- }
-
- return newTotals;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/index.js
deleted file mode 100644
index 0a9e7fe0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './use-shipping-data';
-export * from './types';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/types.ts
deleted file mode 100644
index d191ada7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/types.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * External dependencies
- */
-import { Cart } from '@woocommerce/type-defs/cart';
-
-export interface ShippingData {
- needsShipping: Cart[ 'needsShipping' ];
- hasCalculatedShipping: Cart[ 'hasCalculatedShipping' ];
- shippingRates: Cart[ 'shippingRates' ];
- isLoadingRates: boolean;
- selectedRates: Record< string, string | unknown >;
- // Returns a function that accepts a shipping rate ID and a package ID.
- selectShippingRate: (
- newShippingRateId: string,
- packageId?: string | number | undefined
- ) => void;
- // Only true when ALL packages support local pickup. If true, we can show the collection/delivery toggle
- isCollectable: boolean;
- // True when a rate is currently being selected and persisted to the server.
- isSelectingRate: boolean;
- // True when the user has chosen a local pickup method.
- hasSelectedLocalPickup: boolean;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/use-shipping-data.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/use-shipping-data.ts
deleted file mode 100644
index 0bb63870..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/shipping/use-shipping-data.ts
+++ /dev/null
@@ -1,141 +0,0 @@
-/**
- * External dependencies
- */
-import {
- CART_STORE_KEY as storeKey,
- processErrorResponse,
-} from '@woocommerce/block-data';
-import { useSelect, useDispatch } from '@wordpress/data';
-import { isObject } from '@woocommerce/types';
-import { useEffect, useRef, useCallback } from '@wordpress/element';
-import {
- hasCollectableRate,
- deriveSelectedShippingRates,
-} from '@woocommerce/base-utils';
-import isShallowEqual from '@wordpress/is-shallow-equal';
-import { previewCart } from '@woocommerce/resource-previews';
-
-/**
- * Internal dependencies
- */
-import { useStoreEvents } from '../use-store-events';
-import type { ShippingData } from './types';
-
-export const useShippingData = (): ShippingData => {
- const {
- shippingRates,
- needsShipping,
- hasCalculatedShipping,
- isLoadingRates,
- isCollectable,
- isSelectingRate,
- } = useSelect( ( select ) => {
- const isEditor = !! select( 'core/editor' );
- const store = select( storeKey );
- const rates = isEditor
- ? previewCart.shipping_rates
- : store.getShippingRates();
- return {
- shippingRates: rates,
- needsShipping: isEditor
- ? previewCart.needs_shipping
- : store.getNeedsShipping(),
- hasCalculatedShipping: isEditor
- ? previewCart.has_calculated_shipping
- : store.getHasCalculatedShipping(),
- isLoadingRates: isEditor ? false : store.isCustomerDataUpdating(),
- isCollectable: rates.every(
- ( { shipping_rates: packageShippingRates } ) =>
- packageShippingRates.find( ( { method_id: methodId } ) =>
- hasCollectableRate( methodId )
- )
- ),
- isSelectingRate: isEditor
- ? false
- : store.isShippingRateBeingSelected(),
- };
- } );
-
- // set selected rates on ref so it's always current.
- const selectedRates = useRef< Record< string, string > >( {} );
- useEffect( () => {
- const derivedSelectedRates =
- deriveSelectedShippingRates( shippingRates );
- if (
- isObject( derivedSelectedRates ) &&
- ! isShallowEqual( selectedRates.current, derivedSelectedRates )
- ) {
- selectedRates.current = derivedSelectedRates;
- }
- }, [ shippingRates ] );
-
- const { selectShippingRate: dispatchSelectShippingRate } = useDispatch(
- storeKey
- ) as {
- selectShippingRate: unknown;
- } as {
- selectShippingRate: (
- newShippingRateId: string,
- packageId?: string | number | null
- ) => Promise< unknown >;
- };
-
- const hasSelectedLocalPickup = hasCollectableRate(
- Object.values( selectedRates.current ).map(
- ( rate ) => rate.split( ':' )[ 0 ]
- )
- );
- // Selects a shipping rate, fires an event, and catch any errors.
- const { dispatchCheckoutEvent } = useStoreEvents();
- const selectShippingRate = useCallback(
- (
- newShippingRateId: string,
- packageId?: string | number | undefined
- ): void => {
- let selectPromise;
-
- if ( typeof newShippingRateId === 'undefined' ) {
- return;
- }
-
- /**
- * Picking location handling
- *
- * Forces pickup location to be selected for all packages since we don't allow a mix of shipping and pickup.
- */
- if ( hasCollectableRate( newShippingRateId.split( ':' )[ 0 ] ) ) {
- selectPromise = dispatchSelectShippingRate(
- newShippingRateId,
- null
- );
- } else {
- selectPromise = dispatchSelectShippingRate(
- newShippingRateId,
- packageId
- );
- }
- selectPromise
- .then( () => {
- dispatchCheckoutEvent( 'set-selected-shipping-rate', {
- shippingRateId: newShippingRateId,
- } );
- } )
- .catch( ( error ) => {
- processErrorResponse( error );
- } );
- },
- [ dispatchSelectShippingRate, dispatchCheckoutEvent ]
- );
-
- return {
- isSelectingRate,
- selectedRates: selectedRates.current,
- selectShippingRate,
- shippingRates,
- needsShipping,
- hasCalculatedShipping,
- isLoadingRates,
- isCollectable,
- hasSelectedLocalPickup,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-checkout-submit.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-checkout-submit.js
deleted file mode 100644
index 10e3114a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-checkout-submit.js
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-import { createRegistry, RegistryProvider } from '@wordpress/data';
-
-/**
- * Internal dependencies
- */
-import { useCheckoutSubmit } from '../use-checkout-submit';
-import {
- CHECKOUT_STORE_KEY,
- config as checkoutStoreConfig,
-} from '../../../../data/checkout';
-import {
- PAYMENT_STORE_KEY,
- config as paymentDataStoreConfig,
-} from '../../../../data/payment';
-
-jest.mock( '../../providers/cart-checkout/checkout-events', () => {
- const original = jest.requireActual(
- '../../providers/cart-checkout/checkout-events'
- );
- return {
- ...original,
- useCheckoutEventsContext: () => {
- return { onSubmit: jest.fn() };
- },
- };
-} );
-
-describe( 'useCheckoutSubmit', () => {
- let registry, renderer;
-
- const getWrappedComponents = ( Component ) => (
-
-
-
- );
-
- const getTestComponent = () => () => {
- const data = useCheckoutSubmit();
- return
;
- };
-
- beforeEach( () => {
- registry = createRegistry( {
- [ CHECKOUT_STORE_KEY ]: checkoutStoreConfig,
- [ PAYMENT_STORE_KEY ]: paymentDataStoreConfig,
- } );
- renderer = null;
- } );
-
- it( 'onSubmit calls the correct action in the checkout events context', () => {
- const TestComponent = getTestComponent();
-
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent )
- );
- } );
-
- //eslint-disable-next-line testing-library/await-async-query
- const { onSubmit } = renderer.root.findByType( 'div' ).props;
-
- onSubmit();
-
- expect( onSubmit ).toHaveBeenCalledTimes( 1 );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-query-state.jsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-query-state.jsx
deleted file mode 100644
index ded16add..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-query-state.jsx
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-import { createRegistry, RegistryProvider } from '@wordpress/data';
-import { QUERY_STATE_STORE_KEY as storeKey } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import {
- useQueryStateByContext,
- useQueryStateByKey,
- useSynchronizedQueryState,
-} from '../use-query-state';
-
-jest.mock( '@woocommerce/block-data', () => ( {
- __esModule: true,
- QUERY_STATE_STORE_KEY: 'test/store',
-} ) );
-
-describe( 'Testing Query State Hooks', () => {
- let registry, mocks;
- beforeAll( () => {
- registry = createRegistry();
- mocks = {};
- } );
- /**
- * Test helper to return a tuple containing the expected query value and the
- * expected query state action creator from the given rendered test instance.
- *
- * @param {Object} testRenderer An instance of the created test component.
- *
- * @return {Array} A tuple containing the expected query value as the first
- * element and the expected query action creator as the
- * second argument.
- */
- const getProps = ( testRenderer ) => {
- //eslint-disable-next-line testing-library/await-async-query
- const props = testRenderer.root.findByType( 'div' ).props;
- return [ props[ 'data-queryState' ], props[ 'data-setQueryState' ] ];
- };
-
- /**
- * Returns the given component wrapped in the registry provider for
- * instantiating using the TestRenderer using the current prepared registry
- * for the TestRenderer to instantiate with.
- *
- * @param {*} Component The test component to wrap.
- * @param {Object} props Props to feed the wrapped component.
- *
- * @return {*} Wrapped component.
- */
- const getWrappedComponent = ( Component, props ) => (
-
-
-
- );
-
- /**
- * Returns a TestComponent for the provided hook to test with, and the
- * expected PropKeys for obtaining the values to be fed to the hook as
- * arguments.
- *
- * @param {Function} hookTested The hook being tested to use in the
- * test comopnent.
- * @param {Array} propKeysForArgs An array of keys for the props that
- * will be used on the test component that
- * will have values fed to the tested
- * hook.
- *
- * @return {*} A component ready for testing with!
- */
- const getTestComponent = ( hookTested, propKeysForArgs ) => ( props ) => {
- const args = propKeysForArgs.map( ( key ) => props[ key ] );
- const [ queryValue, setQueryValue ] = hookTested( ...args );
- return (
-
- );
- };
-
- /**
- * A helper for setting up the `mocks` object and the `registry` mock before
- * each test.
- *
- * @param {string} actionMockName This should be the name of the action
- * that the hook returns. This will be
- * mocked using `mocks.action` when
- * registered in the mock registry.
- * @param {string} selectorMockName This should be the mame of the selector
- * that the hook uses. This will be mocked
- * using `mocks.selector` when registered
- * in the mock registry.
- */
- const setupMocks = ( actionMockName, selectorMockName ) => {
- mocks.action = jest.fn().mockReturnValue( { type: 'testAction' } );
- mocks.selector = jest.fn().mockReturnValue( { foo: 'bar' } );
- registry.registerStore( storeKey, {
- reducer: () => ( {} ),
- actions: {
- [ actionMockName ]: mocks.action,
- },
- selectors: {
- [ selectorMockName ]: mocks.selector,
- },
- } );
- };
- describe( 'useQueryStateByContext', () => {
- const TestComponent = getTestComponent( useQueryStateByContext, [
- 'context',
- ] );
- let renderer;
- beforeEach( () => {
- renderer = null;
- setupMocks( 'setValueForQueryContext', 'getValueForQueryContext' );
- } );
- afterEach( () => {
- act( () => {
- renderer.unmount();
- } );
- } );
- it(
- 'calls useSelect with the provided context and returns expected' +
- ' values',
- () => {
- const { action, selector } = mocks;
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponent( TestComponent, {
- context: 'test-context',
- } )
- );
- } );
- const [ queryState, setQueryState ] = getProps( renderer );
- // the {} is because all selectors are called internally in the
- // registry with the first argument being the state which is empty.
- expect( selector ).toHaveBeenLastCalledWith(
- {},
- 'test-context',
- undefined
- );
- expect( queryState ).toEqual( { foo: 'bar' } );
- expect( action ).not.toHaveBeenCalled();
-
- //execute dispatcher and make sure it's called.
- act( () => {
- setQueryState( { foo: 'bar' } );
- } );
- expect( action ).toHaveBeenCalledWith( 'test-context', {
- foo: 'bar',
- } );
- }
- );
- } );
- describe( 'useQueryStateByKey', () => {
- const TestComponent = getTestComponent( useQueryStateByKey, [
- 'queryKey',
- undefined,
- 'context',
- ] );
- let renderer;
- beforeEach( () => {
- renderer = null;
- setupMocks( 'setQueryValue', 'getValueForQueryKey' );
- } );
- afterEach( () => {
- act( () => {
- renderer.unmount();
- } );
- } );
- it(
- 'calls useSelect with the provided context and returns expected' +
- ' values',
- () => {
- const { selector, action } = mocks;
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponent( TestComponent, {
- context: 'test-context',
- queryKey: 'someValue',
- } )
- );
- } );
- const [ queryState, setQueryState ] = getProps( renderer );
- // the {} is because all selectors are called internally in the
- // registry with the first argument being the state which is empty.
- expect( selector ).toHaveBeenLastCalledWith(
- {},
- 'test-context',
- 'someValue',
- undefined
- );
- expect( queryState ).toEqual( { foo: 'bar' } );
- expect( action ).not.toHaveBeenCalled();
-
- //execute dispatcher and make sure it's called.
- act( () => {
- setQueryState( { foo: 'bar' } );
- } );
- expect( action ).toHaveBeenCalledWith(
- 'test-context',
- 'someValue',
- { foo: 'bar' }
- );
- }
- );
- } );
- // Note: these tests only add partial coverage because the state is not
- // actually updated by the action dispatch via our mocks.
- describe( 'useSynchronizedQueryState', () => {
- const TestComponent = getTestComponent( useSynchronizedQueryState, [
- 'synchronizedQuery',
- 'context',
- ] );
- const initialQuery = { a: 'b' };
- let renderer;
- beforeEach( () => {
- setupMocks( 'setValueForQueryContext', 'getValueForQueryContext' );
- } );
- it( 'returns provided query state on initial render', () => {
- const { action, selector } = mocks;
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponent( TestComponent, {
- context: 'test-context',
- synchronizedQuery: initialQuery,
- } )
- );
- } );
- const [ queryState ] = getProps( renderer );
- expect( queryState ).toBe( initialQuery );
- expect( selector ).toHaveBeenLastCalledWith(
- {},
- 'test-context',
- undefined
- );
- expect( action ).toHaveBeenCalledWith( 'test-context', {
- foo: 'bar',
- a: 'b',
- } );
- } );
- it( 'returns merged queryState on subsequent render', () => {
- act( () => {
- renderer.update(
- getWrappedComponent( TestComponent, {
- context: 'test-context',
- synchronizedQuery: initialQuery,
- } )
- );
- } );
- // note our test doesn't interact with an actual reducer so the
- // store state is not updated. Here we're just verifying that
- // what is is returned by the state selector mock is returned.
- // However we DO expect this to be a new object.
- const [ queryState ] = getProps( renderer );
- expect( queryState ).not.toBe( initialQuery );
- expect( queryState ).toEqual( { foo: 'bar' } );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-store-products.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-store-products.js
deleted file mode 100644
index 5695994b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/test/use-store-products.js
+++ /dev/null
@@ -1,109 +0,0 @@
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-import { createRegistry, RegistryProvider } from '@wordpress/data';
-import { COLLECTIONS_STORE_KEY as storeKey } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { useStoreProducts } from '../use-store-products';
-
-jest.mock( '@woocommerce/block-data', () => ( {
- __esModule: true,
- COLLECTIONS_STORE_KEY: 'test/store',
-} ) );
-
-describe( 'useStoreProducts', () => {
- let registry, mocks, renderer;
- const getProps = ( testRenderer ) => {
- const { products, totalProducts, productsLoading } =
- testRenderer.root.findByType( 'div' ).props; //eslint-disable-line testing-library/await-async-query
- return {
- products,
- totalProducts,
- productsLoading,
- };
- };
-
- const getWrappedComponents = ( Component, props ) => (
-
-
-
- );
-
- const getTestComponent =
- () =>
- ( { query } ) => {
- const items = useStoreProducts( query );
- return
;
- };
-
- const setUpMocks = () => {
- mocks = {
- selectors: {
- getCollectionError: jest.fn().mockReturnValue( false ),
- getCollection: jest
- .fn()
- .mockImplementation( () => ( { foo: 'bar' } ) ),
- getCollectionHeader: jest.fn().mockReturnValue( 22 ),
- hasFinishedResolution: jest.fn().mockReturnValue( true ),
- },
- };
- registry.registerStore( storeKey, {
- reducer: () => ( {} ),
- selectors: mocks.selectors,
- } );
- };
-
- beforeEach( () => {
- registry = createRegistry();
- mocks = {};
- renderer = null;
- setUpMocks();
- } );
- it(
- 'should return expected behaviour for equivalent query on props ' +
- 'across renders',
- () => {
- const TestComponent = getTestComponent();
- act( () => {
- renderer = TestRenderer.create(
- getWrappedComponents( TestComponent, {
- query: { bar: 'foo' },
- } )
- );
- } );
- const { products } = getProps( renderer );
- // rerender
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- query: { bar: 'foo' },
- } )
- );
- } );
- // re-render should result in same products object because although
- // query-state is a different instance, it's still equivalent.
- const { products: newProducts } = getProps( renderer );
- expect( newProducts ).toBe( products );
- // now let's change the query passed through to verify new object
- // is created.
- // remember this won't actually change the results because the mock
- // selector is returning an equivalent object when it is called,
- // however it SHOULD be a new object instance.
- act( () => {
- renderer.update(
- getWrappedComponents( TestComponent, {
- query: { foo: 'bar' },
- } )
- );
- } );
- const { products: productsVerification } = getProps( renderer );
- expect( productsVerification ).not.toBe( products );
- expect( productsVerification ).toEqual( products );
- renderer.unmount();
- }
- );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-address.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-address.ts
deleted file mode 100644
index 15d52462..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-address.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * External dependencies
- */
-import {
- defaultAddressFields,
- AddressFields,
- ShippingAddress,
- BillingAddress,
- getSetting,
-} from '@woocommerce/settings';
-import { useCallback } from '@wordpress/element';
-import { useDispatch, useSelect } from '@wordpress/data';
-import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { useCustomerData } from './use-customer-data';
-import { useShippingData } from './shipping/use-shipping-data';
-
-interface CheckoutAddress {
- shippingAddress: ShippingAddress;
- billingAddress: BillingAddress;
- setShippingAddress: ( data: Partial< ShippingAddress > ) => void;
- setBillingAddress: ( data: Partial< BillingAddress > ) => void;
- setEmail: ( value: string ) => void;
- useShippingAsBilling: boolean;
- setUseShippingAsBilling: ( useShippingAsBilling: boolean ) => void;
- defaultAddressFields: AddressFields;
- showShippingFields: boolean;
- showBillingFields: boolean;
- forcedBillingAddress: boolean;
- useBillingAsShipping: boolean;
- needsShipping: boolean;
- showShippingMethods: boolean;
-}
-
-/**
- * Custom hook for exposing address related functionality for the checkout address form.
- */
-export const useCheckoutAddress = (): CheckoutAddress => {
- const { needsShipping } = useShippingData();
- const { useShippingAsBilling, prefersCollection } = useSelect(
- ( select ) => ( {
- useShippingAsBilling:
- select( CHECKOUT_STORE_KEY ).getUseShippingAsBilling(),
- prefersCollection: select( CHECKOUT_STORE_KEY ).prefersCollection(),
- } )
- );
- const { __internalSetUseShippingAsBilling } =
- useDispatch( CHECKOUT_STORE_KEY );
- const {
- billingAddress,
- setBillingAddress,
- shippingAddress,
- setShippingAddress,
- } = useCustomerData();
-
- const setEmail = useCallback(
- ( value: string ) =>
- void setBillingAddress( {
- email: value,
- } ),
- [ setBillingAddress ]
- );
-
- const forcedBillingAddress: boolean = getSetting(
- 'forcedBillingAddress',
- false
- );
- return {
- shippingAddress,
- billingAddress,
- setShippingAddress,
- setBillingAddress,
- setEmail,
- defaultAddressFields,
- useShippingAsBilling,
- setUseShippingAsBilling: __internalSetUseShippingAsBilling,
- needsShipping,
- showShippingFields:
- ! forcedBillingAddress && needsShipping && ! prefersCollection,
- showShippingMethods: needsShipping && ! prefersCollection,
- showBillingFields:
- ! needsShipping || ! useShippingAsBilling || !! prefersCollection,
- forcedBillingAddress,
- useBillingAsShipping: forcedBillingAddress || !! prefersCollection,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-extension-data.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-extension-data.ts
deleted file mode 100644
index 4660071b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-extension-data.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * External dependencies
- */
-import { useDispatch, useSelect } from '@wordpress/data';
-import { useCallback, useRef } from '@wordpress/element';
-import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import type { CheckoutState } from '../../../data/checkout/default-state';
-
-/**
- * Custom hook for setting custom checkout data which is passed to the wc/store/checkout endpoint when processing orders.
- */
-export const useCheckoutExtensionData = (): {
- extensionData: CheckoutState[ 'extensionData' ];
- setExtensionData: (
- namespace: string,
- key: string,
- value: unknown
- ) => void;
-} => {
- const { __internalSetExtensionData } = useDispatch( CHECKOUT_STORE_KEY );
- const extensionData = useSelect( ( select ) =>
- select( CHECKOUT_STORE_KEY ).getExtensionData()
- );
- const extensionDataRef = useRef( extensionData );
-
- const setExtensionData = useCallback(
- ( namespace, key, value ) => {
- __internalSetExtensionData( namespace, {
- [ key ]: value,
- } );
- },
- [ __internalSetExtensionData ]
- );
-
- return {
- extensionData: extensionDataRef.current,
- setExtensionData,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-submit.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-submit.js
deleted file mode 100644
index b10d443e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-checkout-submit.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * External dependencies
- */
-import { CHECKOUT_STORE_KEY, PAYMENT_STORE_KEY } from '@woocommerce/block-data';
-import { useSelect } from '@wordpress/data';
-
-/**
- * Internal dependencies
- */
-import { useCheckoutEventsContext } from '../providers';
-import { usePaymentMethods } from './payment-methods/use-payment-methods';
-
-/**
- * Returns the submitButtonText, onSubmit interface from the checkout context,
- * and an indication of submission status.
- */
-export const useCheckoutSubmit = () => {
- const {
- isCalculating,
- isBeforeProcessing,
- isProcessing,
- isAfterProcessing,
- isComplete,
- hasError,
- } = useSelect( ( select ) => {
- const store = select( CHECKOUT_STORE_KEY );
- return {
- isCalculating: store.isCalculating(),
- isBeforeProcessing: store.isBeforeProcessing(),
- isProcessing: store.isProcessing(),
- isAfterProcessing: store.isAfterProcessing(),
- isComplete: store.isComplete(),
- hasError: store.hasError(),
- };
- } );
- const { activePaymentMethod, isExpressPaymentMethodActive } = useSelect(
- ( select ) => {
- const store = select( PAYMENT_STORE_KEY );
-
- return {
- activePaymentMethod: store.getActivePaymentMethod(),
- isExpressPaymentMethodActive:
- store.isExpressPaymentMethodActive(),
- };
- }
- );
-
- const { onSubmit } = useCheckoutEventsContext();
-
- const { paymentMethods = {} } = usePaymentMethods();
- const paymentMethod = paymentMethods[ activePaymentMethod ] || {};
- const waitingForProcessing =
- isProcessing || isAfterProcessing || isBeforeProcessing;
- const waitingForRedirect = isComplete && ! hasError;
- const paymentMethodButtonLabel = paymentMethod.placeOrderButtonLabel;
-
- return {
- paymentMethodButtonLabel,
- onSubmit,
- isCalculating,
- isDisabled: isProcessing || isExpressPaymentMethodActive,
- waitingForProcessing,
- waitingForRedirect,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-customer-data.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-customer-data.ts
deleted file mode 100644
index 1f970fde..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-customer-data.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * External dependencies
- */
-import { useDispatch, useSelect } from '@wordpress/data';
-import { CART_STORE_KEY as storeKey } from '@woocommerce/block-data';
-import type { BillingAddress, ShippingAddress } from '@woocommerce/settings';
-
-export interface CustomerDataType {
- isInitialized: boolean;
- billingAddress: BillingAddress;
- shippingAddress: ShippingAddress;
- setBillingAddress: ( data: Partial< BillingAddress > ) => void;
- setShippingAddress: ( data: Partial< ShippingAddress > ) => void;
-}
-
-/**
- * This is a custom hook for syncing customer address data (billing and shipping) with the server.
- */
-export const useCustomerData = (): CustomerDataType => {
- const { customerData, isInitialized } = useSelect( ( select ) => {
- const store = select( storeKey );
- return {
- customerData: store.getCustomerData(),
- isInitialized: store.hasFinishedResolution( 'getCartData' ),
- };
- } );
- const { setShippingAddress, setBillingAddress } = useDispatch( storeKey );
-
- return {
- isInitialized,
- billingAddress: customerData.billingAddress,
- shippingAddress: customerData.shippingAddress,
- setBillingAddress,
- setShippingAddress,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-product-attributes.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-product-attributes.ts
deleted file mode 100644
index be1e5e0f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-product-attributes.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- * External dependencies
- */
-import { useEffect, useRef, useState } from '@wordpress/element';
-import { getAttributes, getTerms } from '@woocommerce/editor-components/utils';
-import {
- AttributeObject,
- AttributeTerm,
- AttributeWithTerms,
-} from '@woocommerce/types';
-import { formatError } from '@woocommerce/base-utils';
-
-export default function useProductAttributes( shouldLoadAttributes: boolean ) {
- const [ errorLoadingAttributes, setErrorLoadingAttributes ] =
- useState< Awaited< ReturnType< typeof formatError > > | null >( null );
- const [ isLoadingAttributes, setIsLoadingAttributes ] = useState( false );
- const [ productsAttributes, setProductsAttributes ] = useState<
- AttributeWithTerms[]
- >( [] );
- const hasLoadedAttributes = useRef( false );
-
- useEffect( () => {
- if (
- ! shouldLoadAttributes ||
- isLoadingAttributes ||
- hasLoadedAttributes.current
- )
- return;
-
- async function fetchAttributesWithTerms() {
- setIsLoadingAttributes( true );
-
- try {
- const attributes: AttributeObject[] = await getAttributes();
- const attributesWithTerms: AttributeWithTerms[] = [];
-
- for ( const attribute of attributes ) {
- const terms: AttributeTerm[] = await getTerms(
- attribute.id
- );
-
- attributesWithTerms.push( {
- ...attribute,
- // Manually adding the parent id because of a Rest API bug
- // returning always `0` as parent.
- // see https://github.com/woocommerce/woocommerce-blocks/issues/8501
- parent: 0,
- terms: terms.map( ( term ) => ( {
- ...term,
- attr_slug: attribute.taxonomy,
- parent: attribute.id,
- } ) ),
- } );
- }
-
- setProductsAttributes( attributesWithTerms );
- hasLoadedAttributes.current = true;
- } catch ( e ) {
- if ( e instanceof Error ) {
- setErrorLoadingAttributes( await formatError( e ) );
- }
- } finally {
- setIsLoadingAttributes( false );
- }
- }
-
- fetchAttributesWithTerms();
-
- return () => {
- hasLoadedAttributes.current = true;
- };
- }, [ isLoadingAttributes, shouldLoadAttributes ] );
-
- return {
- errorLoadingAttributes,
- isLoadingAttributes,
- productsAttributes,
- };
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-query-state.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-query-state.js
deleted file mode 100644
index 8a61ca9e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-query-state.js
+++ /dev/null
@@ -1,149 +0,0 @@
-/**
- * External dependencies
- */
-import { QUERY_STATE_STORE_KEY as storeKey } from '@woocommerce/block-data';
-import { useSelect, useDispatch } from '@wordpress/data';
-import { useRef, useEffect, useCallback } from '@wordpress/element';
-import isShallowEqual from '@wordpress/is-shallow-equal';
-import { useShallowEqual, usePrevious } from '@woocommerce/base-hooks';
-
-/**
- * Internal dependencies
- */
-
-import { useQueryStateContext } from '../providers/query-state-context';
-
-/**
- * A custom hook that exposes the current query state and a setter for the query
- * state store for the given context.
- *
- * "Query State" is a wp.data store that keeps track of an arbitrary object of
- * query keys and their values.
- *
- * @param {string} [context] What context to retrieve the query state for. If not
- * provided, this hook will attempt to get the context
- * from the query state context provided by the
- * QueryStateContextProvider
- *
- * @return {Array} An array that has two elements. The first element is the
- * query state value for the given context. The second element
- * is a dispatcher function for setting the query state.
- */
-export const useQueryStateByContext = ( context ) => {
- const queryStateContext = useQueryStateContext();
- context = context || queryStateContext;
- const queryState = useSelect(
- ( select ) => {
- const store = select( storeKey );
- return store.getValueForQueryContext( context, undefined );
- },
- [ context ]
- );
- const { setValueForQueryContext } = useDispatch( storeKey );
- const setQueryState = useCallback(
- ( value ) => {
- setValueForQueryContext( context, value );
- },
- [ context, setValueForQueryContext ]
- );
-
- return [ queryState, setQueryState ];
-};
-
-/**
- * A custom hook that exposes the current query state value and a setter for the
- * given context and query key.
- *
- * "Query State" is a wp.data store that keeps track of an arbitrary object of
- * query keys and their values.
- *
- * @param {*} queryKey The specific query key to retrieve the value for.
- * @param {*} [defaultValue] Default value if query does not exist.
- * @param {string} [context] What context to retrieve the query state for. If
- * not provided will attempt to use what is provided
- * by query state context.
- *
- * @return {*} Whatever value is set at the query state index using the
- * provided context and query key.
- */
-export const useQueryStateByKey = ( queryKey, defaultValue, context ) => {
- const queryStateContext = useQueryStateContext();
- context = context || queryStateContext;
- const queryValue = useSelect(
- ( select ) => {
- const store = select( storeKey );
- return store.getValueForQueryKey( context, queryKey, defaultValue );
- },
- [ context, queryKey ]
- );
-
- const { setQueryValue } = useDispatch( storeKey );
- const setQueryValueByKey = useCallback(
- ( value ) => {
- setQueryValue( context, queryKey, value );
- },
- [ context, queryKey, setQueryValue ]
- );
-
- return [ queryValue, setQueryValueByKey ];
-};
-
-/**
- * A custom hook that works similarly to useQueryStateByContext. However, this
- * hook allows for synchronizing with a provided queryState object.
- *
- * This hook does the following things with the provided `synchronizedQuery`
- * object:
- *
- * - whenever synchronizedQuery varies between renders, the queryState will be
- * updated to a merged object of the internal queryState and the provided
- * object. Note, any values from the same properties between objects will
- * be set from synchronizedQuery.
- * - if there are no changes between renders, then the existing internal
- * queryState is always returned.
- * - on initial render, the synchronizedQuery value is returned.
- *
- * Typically, this hook would be used in a scenario where there may be external
- * triggers for updating the query state (i.e. initial population of query
- * state by hydration or component attributes, or routing url changes that
- * affect query state).
- *
- * @param {Object} synchronizedQuery A provided query state object to
- * synchronize internal query state with.
- * @param {string} [context] What context to retrieve the query state
- * for. If not provided, will be pulled from
- * the QueryStateContextProvider in the tree.
- */
-export const useSynchronizedQueryState = ( synchronizedQuery, context ) => {
- const queryStateContext = useQueryStateContext();
- context = context || queryStateContext;
- const [ queryState, setQueryState ] = useQueryStateByContext( context );
- const currentQueryState = useShallowEqual( queryState );
- const currentSynchronizedQuery = useShallowEqual( synchronizedQuery );
- const previousSynchronizedQuery = usePrevious( currentSynchronizedQuery );
- // used to ensure we allow initial synchronization to occur before
- // returning non-synced state.
- const isInitialized = useRef( false );
- // update queryState anytime incoming synchronizedQuery changes
- useEffect( () => {
- if (
- ! isShallowEqual(
- previousSynchronizedQuery,
- currentSynchronizedQuery
- )
- ) {
- setQueryState(
- Object.assign( {}, currentQueryState, currentSynchronizedQuery )
- );
- isInitialized.current = true;
- }
- }, [
- currentQueryState,
- currentSynchronizedQuery,
- previousSynchronizedQuery,
- setQueryState,
- ] );
- return isInitialized.current
- ? [ queryState, setQueryState ]
- : [ synchronizedQuery, setQueryState ];
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-show-shipping-total-warning.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-show-shipping-total-warning.ts
deleted file mode 100644
index f1299f24..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-show-shipping-total-warning.ts
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * External dependencies
- */
-import { useDispatch, useSelect } from '@wordpress/data';
-import { CART_STORE_KEY, CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-import { useEffect } from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import { hasShippingRate } from '@woocommerce/base-components/cart-checkout/totals/shipping/utils';
-import { hasCollectableRate } from '@woocommerce/base-utils';
-import { isString } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import { useShippingData } from './shipping/use-shipping-data';
-
-export const useShowShippingTotalWarning = () => {
- const context = 'woocommerce/checkout-totals-block';
- const errorNoticeId = 'wc-blocks-totals-shipping-warning';
-
- const { shippingRates } = useShippingData();
- const hasRates = hasShippingRate( shippingRates );
- const {
- prefersCollection,
- isRateBeingSelected,
- shippingNotices,
- cartData,
- } = useSelect( ( select ) => {
- return {
- cartData: select( CART_STORE_KEY ).getCartData(),
- prefersCollection: select( CHECKOUT_STORE_KEY ).prefersCollection(),
- isRateBeingSelected:
- select( CART_STORE_KEY ).isShippingRateBeingSelected(),
- shippingNotices: select( 'core/notices' ).getNotices( context ),
- };
- } );
- const { createInfoNotice, removeNotice } = useDispatch( 'core/notices' );
-
- useEffect( () => {
- if ( ! hasRates || isRateBeingSelected ) {
- // Early return because shipping rates were not yet loaded from the cart data store, or the user is changing
- // rate, no need to alter the notice until we know what the actual rate is.
- return;
- }
-
- const selectedRates = cartData?.shippingRates?.reduce(
- ( acc: string[], rate ) => {
- const selectedRateForPackage = rate.shipping_rates.find(
- ( shippingRate ) => {
- return shippingRate.selected;
- }
- );
- if (
- typeof selectedRateForPackage?.method_id !== 'undefined'
- ) {
- acc.push( selectedRateForPackage?.method_id );
- }
- return acc;
- },
- []
- );
- const isPickupRateSelected = Object.values( selectedRates ).some(
- ( rate: unknown ) => {
- if ( isString( rate ) ) {
- return hasCollectableRate( rate );
- }
- return false;
- }
- );
-
- // There is a mismatch between the method the user chose (pickup or shipping) and the currently selected rate.
- if (
- hasRates &&
- ! prefersCollection &&
- ! isRateBeingSelected &&
- isPickupRateSelected &&
- shippingNotices.length === 0
- ) {
- createInfoNotice(
- __(
- 'Totals will be recalculated when a valid shipping method is selected.',
- 'woo-gutenberg-products-block'
- ),
- {
- id: 'wc-blocks-totals-shipping-warning',
- isDismissible: false,
- context,
- }
- );
- return;
- }
-
- // Don't show the notice if they have selected local pickup, or if they have selected a valid regular shipping rate.
- if (
- ( prefersCollection || ! isPickupRateSelected ) &&
- shippingNotices.length > 0
- ) {
- removeNotice( errorNoticeId, context );
- }
- }, [
- cartData?.shippingRates,
- createInfoNotice,
- hasRates,
- isRateBeingSelected,
- prefersCollection,
- removeNotice,
- shippingNotices,
- shippingRates,
- ] );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-add-to-cart.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-add-to-cart.ts
deleted file mode 100644
index 7495ac7d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-add-to-cart.ts
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * External dependencies
- */
-import { useState, useEffect, useRef } from '@wordpress/element';
-import { useDispatch } from '@wordpress/data';
-import { CART_STORE_KEY as storeKey } from '@woocommerce/block-data';
-import { decodeEntities } from '@wordpress/html-entities';
-import type { CartItem } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import { useStoreCart } from './cart/use-store-cart';
-
-/**
- * @typedef {import('@woocommerce/type-defs/hooks').StoreCartItemAddToCart} StoreCartItemAddToCart
- */
-
-interface StoreAddToCart {
- cartQuantity: number;
- addingToCart: boolean;
- cartIsLoading: boolean;
- addToCart: ( quantity?: number ) => Promise< boolean >;
-}
-/**
- * Get the quantity of a product in the cart.
- *
- * @param {Object} cartItems Array of items.
- * @param {number} productId The product id to look for.
- * @return {number} Quantity in the cart.
- */
-const getQuantityFromCartItems = (
- cartItems: Array< CartItem >,
- productId: number
-): number => {
- const productItem = cartItems.find( ( { id } ) => id === productId );
-
- return productItem ? productItem.quantity : 0;
-};
-
-/**
- * A custom hook for exposing cart related data for a given product id and an
- * action for adding a single quantity of the product _to_ the cart.
- *
- *
- * @param {number} productId The product id to be added to the cart.
- *
- * @return {StoreCartItemAddToCart} An object exposing data and actions relating
- * to add to cart functionality.
- */
-export const useStoreAddToCart = ( productId: number ): StoreAddToCart => {
- const { addItemToCart } = useDispatch( storeKey );
- const { cartItems, cartIsLoading } = useStoreCart();
- const { createErrorNotice, removeNotice } = useDispatch( 'core/notices' );
-
- const [ addingToCart, setAddingToCart ] = useState( false );
- const currentCartItemQuantity = useRef(
- getQuantityFromCartItems( cartItems, productId )
- );
-
- const addToCart = ( quantity = 1 ) => {
- setAddingToCart( true );
- return addItemToCart( productId, quantity )
- .then( () => {
- removeNotice( 'add-to-cart' );
- } )
- .catch( ( error ) => {
- createErrorNotice( decodeEntities( error.message ), {
- id: 'add-to-cart',
- context: 'wc/all-products',
- isDismissible: true,
- } );
- } )
- .finally( () => {
- setAddingToCart( false );
- } );
- };
-
- useEffect( () => {
- const quantity = getQuantityFromCartItems( cartItems, productId );
-
- if ( quantity !== currentCartItemQuantity.current ) {
- currentCartItemQuantity.current = quantity;
- }
- }, [ cartItems, productId ] );
-
- return {
- cartQuantity: Number.isFinite( currentCartItemQuantity.current )
- ? currentCartItemQuantity.current
- : 0,
- addingToCart,
- cartIsLoading,
- addToCart,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-events.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-events.ts
deleted file mode 100644
index 9da16d58..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-events.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * External dependencies
- */
-import { doAction } from '@wordpress/hooks';
-import { select } from '@wordpress/data';
-import { useCallback } from '@wordpress/element';
-
-type StoreEvent = (
- eventName: string,
- eventParams?: Partial< Record< string, unknown > >
-) => void;
-
-/**
- * Abstraction on top of @wordpress/hooks for dispatching events via doAction for 3rd parties to hook into.
- */
-export const useStoreEvents = (): {
- dispatchStoreEvent: StoreEvent;
- dispatchCheckoutEvent: StoreEvent;
-} => {
- const dispatchStoreEvent = useCallback( ( eventName, eventParams = {} ) => {
- try {
- doAction(
- `experimental__woocommerce_blocks-${ eventName }`,
- eventParams
- );
- } catch ( e ) {
- // We don't handle thrown errors but just console.log for troubleshooting.
- // eslint-disable-next-line no-console
- console.error( e );
- }
- }, [] );
-
- const dispatchCheckoutEvent = useCallback(
- ( eventName, eventParams = {} ) => {
- try {
- doAction(
- `experimental__woocommerce_blocks-checkout-${ eventName }`,
- {
- ...eventParams,
- storeCart: select( 'wc/store/cart' ).getCartData(),
- }
- );
- } catch ( e ) {
- // We don't handle thrown errors but just console.log for troubleshooting.
- // eslint-disable-next-line no-console
- console.error( e );
- }
- },
- []
- );
-
- return { dispatchStoreEvent, dispatchCheckoutEvent };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-products.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-products.ts
deleted file mode 100644
index 4ccf5f49..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-store-products.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * External dependencies
- */
-import { Query, ProductResponseItem } from '@woocommerce/types';
-/**
- * Internal dependencies
- */
-import { useCollectionHeader, useCollection } from './collections';
-
-/**
- * This is a custom hook that is wired up to the `wc/store/collections` data
- * store for the `wc/store/v1/products` route. Given a query object, this
- * will ensure a component is kept up to date with the products matching that
- * query in the store state.
- *
- * @param {Object} query An object containing any query arguments to be
- * included with the collection request for the
- * products. Does not have to be included.
- *
- * @return {Object} This hook will return an object with three properties:
- * - products An array of product objects.
- * - totalProducts The total number of products that match
- * the given query parameters.
- * - productsLoading A boolean indicating whether the products
- * are still loading or not.
- */
-export const useStoreProducts = (
- query: Query
-): {
- products: ProductResponseItem[];
- totalProducts: number;
- productsLoading: boolean;
-} => {
- const collectionOptions = {
- namespace: '/wc/store/v1',
- resourceName: 'products',
- };
- const { results: products, isLoading: productsLoading } =
- useCollection< ProductResponseItem >( {
- ...collectionOptions,
- query,
- } );
- const { value: totalProducts } = useCollectionHeader( 'x-wp-total', {
- ...collectionOptions,
- query,
- } );
- return {
- products,
- totalProducts: parseInt( totalProducts as string, 10 ),
- productsLoading,
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-validation.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-validation.ts
deleted file mode 100644
index 918f74e4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/hooks/use-validation.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * External dependencies
- */
-import { useCallback } from '@wordpress/element';
-import type {
- ValidationData,
- ValidationContextError,
-} from '@woocommerce/types';
-import { useDispatch, useSelect } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Custom hook for setting for adding errors to the validation system.
- */
-export const useValidation = (): ValidationData => {
- const { clearValidationError, hideValidationError, setValidationErrors } =
- useDispatch( VALIDATION_STORE_KEY );
-
- const prefix = 'extensions-errors';
-
- const { hasValidationErrors, getValidationError } = useSelect(
- ( mapSelect ) => {
- const store = mapSelect( VALIDATION_STORE_KEY );
- return {
- hasValidationErrors: store.hasValidationErrors(),
- getValidationError: ( validationErrorId: string ) =>
- store.getValidationError(
- `${ prefix }-${ validationErrorId }`
- ),
- };
- }
- );
-
- return {
- hasValidationErrors,
- getValidationError,
- clearValidationError: useCallback(
- ( validationErrorId: string ) =>
- clearValidationError( `${ prefix }-${ validationErrorId }` ),
- [ clearValidationError ]
- ),
- hideValidationError: useCallback(
- ( validationErrorId: string ) =>
- hideValidationError( `${ prefix }-${ validationErrorId }` ),
- [ hideValidationError ]
- ),
- setValidationErrors: useCallback(
- ( errorsObject: Record< string, ValidationContextError > ) =>
- setValidationErrors(
- Object.fromEntries(
- Object.entries( errorsObject ).map(
- ( [ validationErrorId, error ] ) => [
- `${ prefix }-${ validationErrorId }`,
- error,
- ]
- )
- )
- ),
- [ setValidationErrors ]
- ),
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/index.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/index.ts
deleted file mode 100644
index 68f05b7d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './event-emit';
-export * from './hooks';
-export * from './providers';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/actions.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/actions.js
deleted file mode 100644
index b1a053ab..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/actions.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Internal dependencies
- */
-import { ACTION_TYPES } from './constants';
-
-const {
- SET_PRISTINE,
- SET_IDLE,
- SET_DISABLED,
- SET_PROCESSING,
- SET_BEFORE_PROCESSING,
- SET_AFTER_PROCESSING,
- SET_PROCESSING_RESPONSE,
- SET_HAS_ERROR,
- SET_NO_ERROR,
- SET_QUANTITY,
- SET_REQUEST_PARAMS,
-} = ACTION_TYPES;
-
-/**
- * All the actions that can be dispatched for the checkout.
- */
-export const actions = {
- setPristine: () => ( {
- type: SET_PRISTINE,
- } ),
- setIdle: () => ( {
- type: SET_IDLE,
- } ),
- setDisabled: () => ( {
- type: SET_DISABLED,
- } ),
- setProcessing: () => ( {
- type: SET_PROCESSING,
- } ),
- setBeforeProcessing: () => ( {
- type: SET_BEFORE_PROCESSING,
- } ),
- setAfterProcessing: () => ( {
- type: SET_AFTER_PROCESSING,
- } ),
- setProcessingResponse: ( data ) => ( {
- type: SET_PROCESSING_RESPONSE,
- data,
- } ),
- setHasError: ( hasError = true ) => {
- const type = hasError ? SET_HAS_ERROR : SET_NO_ERROR;
- return { type };
- },
- setQuantity: ( quantity ) => ( {
- type: SET_QUANTITY,
- quantity,
- } ),
- setRequestParams: ( data ) => ( {
- type: SET_REQUEST_PARAMS,
- data,
- } ),
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/constants.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/constants.js
deleted file mode 100644
index c9ebea0b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/constants.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * @type {import("@woocommerce/type-defs/add-to-cart-form").AddToCartFormStatusConstants}
- */
-export const STATUS = {
- PRISTINE: 'pristine',
- IDLE: 'idle',
- DISABLED: 'disabled',
- PROCESSING: 'processing',
- BEFORE_PROCESSING: 'before_processing',
- AFTER_PROCESSING: 'after_processing',
-};
-
-export const DEFAULT_STATE = {
- status: STATUS.PRISTINE,
- hasError: false,
- quantity: 0,
- processingResponse: null,
- requestParams: {},
-};
-export const ACTION_TYPES = {
- SET_PRISTINE: 'set_pristine',
- SET_IDLE: 'set_idle',
- SET_DISABLED: 'set_disabled',
- SET_PROCESSING: 'set_processing',
- SET_BEFORE_PROCESSING: 'set_before_processing',
- SET_AFTER_PROCESSING: 'set_after_processing',
- SET_PROCESSING_RESPONSE: 'set_processing_response',
- SET_HAS_ERROR: 'set_has_error',
- SET_NO_ERROR: 'set_no_error',
- SET_QUANTITY: 'set_quantity',
- SET_REQUEST_PARAMS: 'set_request_params',
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/event-emit.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/event-emit.js
deleted file mode 100644
index b9557347..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/event-emit.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Internal dependencies
- */
-import {
- emitterCallback,
- reducer,
- emitEvent,
- emitEventWithAbort,
-} from '../../../event-emit';
-
-const EMIT_TYPES = {
- ADD_TO_CART_BEFORE_PROCESSING: 'add_to_cart_before_processing',
- ADD_TO_CART_AFTER_PROCESSING_WITH_SUCCESS:
- 'add_to_cart_after_processing_with_success',
- ADD_TO_CART_AFTER_PROCESSING_WITH_ERROR:
- 'add_to_cart_after_processing_with_error',
-};
-
-/**
- * Receives a reducer dispatcher and returns an object with the callback registration function for
- * the add to cart emit events.
- *
- * Calling the event registration function with the callback will register it for the event emitter
- * and will return a dispatcher for removing the registered callback (useful for implementation
- * in `useEffect`).
- *
- * @param {Function} dispatcher The emitter reducer dispatcher.
- *
- * @return {Object} An object with the add to cart form emitter registration
- */
-const emitterObservers = ( dispatcher ) => ( {
- onAddToCartAfterProcessingWithSuccess: emitterCallback(
- EMIT_TYPES.ADD_TO_CART_AFTER_PROCESSING_WITH_SUCCESS,
- dispatcher
- ),
- onAddToCartProcessingWithError: emitterCallback(
- EMIT_TYPES.ADD_TO_CART_AFTER_PROCESSING_WITH_ERROR,
- dispatcher
- ),
- onAddToCartBeforeProcessing: emitterCallback(
- EMIT_TYPES.ADD_TO_CART_BEFORE_PROCESSING,
- dispatcher
- ),
-} );
-
-export { EMIT_TYPES, emitterObservers, reducer, emitEvent, emitEventWithAbort };
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/index.js
deleted file mode 100644
index 42f7b347..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/index.js
+++ /dev/null
@@ -1,324 +0,0 @@
-/**
- * External dependencies
- */
-import {
- createContext,
- useContext,
- useReducer,
- useMemo,
- useEffect,
-} from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import { useShallowEqual } from '@woocommerce/base-hooks';
-import {
- productIsPurchasable,
- productSupportsAddToCartForm,
-} from '@woocommerce/base-utils';
-import { useDispatch } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { actions } from './actions';
-import { reducer } from './reducer';
-import { DEFAULT_STATE, STATUS } from './constants';
-import {
- EMIT_TYPES,
- emitterObservers,
- emitEvent,
- emitEventWithAbort,
- reducer as emitReducer,
-} from './event-emit';
-import { isErrorResponse, isFailResponse } from '../../../event-emit';
-import { removeNoticesByStatus } from '../../../../../utils/notices';
-
-/**
- * @typedef {import('@woocommerce/type-defs/add-to-cart-form').AddToCartFormDispatchActions} AddToCartFormDispatchActions
- * @typedef {import('@woocommerce/type-defs/add-to-cart-form').AddToCartFormEventRegistration} AddToCartFormEventRegistration
- * @typedef {import('@woocommerce/type-defs/contexts').AddToCartFormContext} AddToCartFormContext
- */
-
-const AddToCartFormContext = createContext( {
- product: {},
- productType: 'simple',
- productIsPurchasable: true,
- productHasOptions: false,
- supportsFormElements: true,
- showFormElements: false,
- quantity: 0,
- minQuantity: 1,
- maxQuantity: 99,
- requestParams: {},
- isIdle: false,
- isDisabled: false,
- isProcessing: false,
- isBeforeProcessing: false,
- isAfterProcessing: false,
- hasError: false,
- eventRegistration: {
- onAddToCartAfterProcessingWithSuccess: ( callback ) => void callback,
- onAddToCartAfterProcessingWithError: ( callback ) => void callback,
- onAddToCartBeforeProcessing: ( callback ) => void callback,
- },
- dispatchActions: {
- resetForm: () => void null,
- submitForm: () => void null,
- setQuantity: ( quantity ) => void quantity,
- setHasError: ( hasError ) => void hasError,
- setAfterProcessing: ( response ) => void response,
- setRequestParams: ( data ) => void data,
- },
-} );
-
-/**
- * @return {AddToCartFormContext} Returns the add to cart form data context value
- */
-export const useAddToCartFormContext = () => {
- // @ts-ignore
- return useContext( AddToCartFormContext );
-};
-
-/**
- * Add to cart form state provider.
- *
- * This provides provides an api interface exposing add to cart form state.
- *
- * @param {Object} props Incoming props for the provider.
- * @param {Object} props.children The children being wrapped.
- * @param {Object} [props.product] The product for which the form belongs to.
- * @param {boolean} [props.showFormElements] Should form elements be shown.
- */
-export const AddToCartFormStateContextProvider = ( {
- children,
- product,
- showFormElements,
-} ) => {
- const [ addToCartFormState, dispatch ] = useReducer(
- reducer,
- DEFAULT_STATE
- );
- const [ observers, observerDispatch ] = useReducer( emitReducer, {} );
- const currentObservers = useShallowEqual( observers );
- const { createErrorNotice } = useDispatch( 'core/notices' );
- const { setValidationErrors } = useDispatch( VALIDATION_STORE_KEY );
-
- /**
- * @type {AddToCartFormEventRegistration}
- */
- const eventRegistration = useMemo(
- () => ( {
- onAddToCartAfterProcessingWithSuccess:
- emitterObservers( observerDispatch )
- .onAddToCartAfterProcessingWithSuccess,
- onAddToCartAfterProcessingWithError:
- emitterObservers( observerDispatch )
- .onAddToCartAfterProcessingWithError,
- onAddToCartBeforeProcessing:
- emitterObservers( observerDispatch )
- .onAddToCartBeforeProcessing,
- } ),
- [ observerDispatch ]
- );
-
- /**
- * @type {AddToCartFormDispatchActions}
- */
- const dispatchActions = useMemo(
- () => ( {
- resetForm: () => void dispatch( actions.setPristine() ),
- submitForm: () => void dispatch( actions.setBeforeProcessing() ),
- setQuantity: ( quantity ) =>
- void dispatch( actions.setQuantity( quantity ) ),
- setHasError: ( hasError ) =>
- void dispatch( actions.setHasError( hasError ) ),
- setRequestParams: ( data ) =>
- void dispatch( actions.setRequestParams( data ) ),
- setAfterProcessing: ( response ) => {
- dispatch( actions.setProcessingResponse( response ) );
- void dispatch( actions.setAfterProcessing() );
- },
- } ),
- []
- );
-
- /**
- * This Effect is responsible for disabling or enabling the form based on the provided product.
- */
- useEffect( () => {
- const status = addToCartFormState.status;
- const willBeDisabled =
- ! product.id || ! productIsPurchasable( product );
-
- if ( status === STATUS.DISABLED && ! willBeDisabled ) {
- dispatch( actions.setIdle() );
- } else if ( status !== STATUS.DISABLED && willBeDisabled ) {
- dispatch( actions.setDisabled() );
- }
- }, [ addToCartFormState.status, product, dispatch ] );
-
- /**
- * This Effect performs events before processing starts.
- */
- useEffect( () => {
- const status = addToCartFormState.status;
-
- if ( status === STATUS.BEFORE_PROCESSING ) {
- removeNoticesByStatus( 'error', 'wc/add-to-cart' );
- emitEvent(
- currentObservers,
- EMIT_TYPES.ADD_TO_CART_BEFORE_PROCESSING,
- {}
- ).then( ( response ) => {
- if ( response !== true ) {
- if ( Array.isArray( response ) ) {
- response.forEach(
- ( { errorMessage, validationErrors } ) => {
- if ( errorMessage ) {
- createErrorNotice( errorMessage, {
- context: 'wc/add-to-cart',
- } );
- }
- if ( validationErrors ) {
- setValidationErrors( validationErrors );
- }
- }
- );
- }
- dispatch( actions.setIdle() );
- } else {
- dispatch( actions.setProcessing() );
- }
- } );
- }
- }, [
- addToCartFormState.status,
- setValidationErrors,
- createErrorNotice,
- dispatch,
- currentObservers,
- product?.id,
- ] );
-
- /**
- * This Effect performs events after processing is complete.
- */
- useEffect( () => {
- if ( addToCartFormState.status === STATUS.AFTER_PROCESSING ) {
- // @todo: This data package differs from what is passed through in
- // the checkout state context. Should we introduce a "context"
- // property in the data package for this emitted event so that
- // observers are able to know what context the event is firing in?
- const data = {
- processingResponse: addToCartFormState.processingResponse,
- };
-
- const handleErrorResponse = ( observerResponses ) => {
- let handled = false;
- observerResponses.forEach( ( response ) => {
- const { message, messageContext } = response;
- if (
- ( isErrorResponse( response ) ||
- isFailResponse( response ) ) &&
- message
- ) {
- const errorOptions = messageContext
- ? { context: messageContext }
- : undefined;
- handled = true;
- createErrorNotice( message, errorOptions );
- }
- } );
- return handled;
- };
-
- if ( addToCartFormState.hasError ) {
- // allow things to customize the error with a fallback if nothing customizes it.
- emitEventWithAbort(
- currentObservers,
- EMIT_TYPES.ADD_TO_CART_AFTER_PROCESSING_WITH_ERROR,
- data
- ).then( ( observerResponses ) => {
- if ( ! handleErrorResponse( observerResponses ) ) {
- // no error handling in place by anything so let's fall back to default
- const message =
- data.processingResponse?.message ||
- __(
- 'Something went wrong. Please contact us for assistance.',
- 'woocommerce'
- );
- createErrorNotice( message, {
- id: 'add-to-cart',
- context: `woocommerce/single-product/${
- product?.id || 0
- }`,
- } );
- }
- dispatch( actions.setIdle() );
- } );
- return;
- }
-
- emitEventWithAbort(
- currentObservers,
- EMIT_TYPES.ADD_TO_CART_AFTER_PROCESSING_WITH_SUCCESS,
- data
- ).then( ( observerResponses ) => {
- if ( handleErrorResponse( observerResponses ) ) {
- // this will set an error which will end up
- // triggering the onAddToCartAfterProcessingWithError emitter.
- // and then setting to IDLE state.
- dispatch( actions.setHasError( true ) );
- } else {
- dispatch( actions.setIdle() );
- }
- } );
- }
- }, [
- addToCartFormState.status,
- addToCartFormState.hasError,
- addToCartFormState.processingResponse,
- dispatchActions,
- createErrorNotice,
- currentObservers,
- product?.id,
- ] );
-
- const supportsFormElements = productSupportsAddToCartForm( product );
-
- /**
- * @type {AddToCartFormContext}
- */
- const contextData = {
- product,
- productType: product.type || 'simple',
- productIsPurchasable: productIsPurchasable( product ),
- productHasOptions: product.has_options || false,
- supportsFormElements,
- showFormElements: showFormElements && supportsFormElements,
- quantity:
- addToCartFormState.quantity || product?.add_to_cart?.minimum || 1,
- minQuantity: product?.add_to_cart?.minimum || 1,
- maxQuantity: product?.add_to_cart?.maximum || 99,
- multipleOf: product?.add_to_cart?.multiple_of || 1,
- requestParams: addToCartFormState.requestParams,
- isIdle: addToCartFormState.status === STATUS.IDLE,
- isDisabled: addToCartFormState.status === STATUS.DISABLED,
- isProcessing: addToCartFormState.status === STATUS.PROCESSING,
- isBeforeProcessing:
- addToCartFormState.status === STATUS.BEFORE_PROCESSING,
- isAfterProcessing:
- addToCartFormState.status === STATUS.AFTER_PROCESSING,
- hasError: addToCartFormState.hasError,
- eventRegistration,
- dispatchActions,
- };
- return (
-
- { children }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/reducer.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/reducer.js
deleted file mode 100644
index 6fe06991..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form-state/reducer.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Internal dependencies
- */
-import { ACTION_TYPES, DEFAULT_STATE, STATUS } from './constants';
-
-const {
- SET_PRISTINE,
- SET_IDLE,
- SET_DISABLED,
- SET_PROCESSING,
- SET_BEFORE_PROCESSING,
- SET_AFTER_PROCESSING,
- SET_PROCESSING_RESPONSE,
- SET_HAS_ERROR,
- SET_NO_ERROR,
- SET_QUANTITY,
- SET_REQUEST_PARAMS,
-} = ACTION_TYPES;
-
-const {
- PRISTINE,
- IDLE,
- DISABLED,
- PROCESSING,
- BEFORE_PROCESSING,
- AFTER_PROCESSING,
-} = STATUS;
-
-/**
- * Reducer for the checkout state
- *
- * @param {Object} state Current state.
- * @param {Object} action Incoming action object.
- * @param {number} action.quantity Incoming quantity.
- * @param {string} action.type Type of action.
- * @param {Object} action.data Incoming payload for action.
- */
-export const reducer = ( state = DEFAULT_STATE, { quantity, type, data } ) => {
- let newState;
- switch ( type ) {
- case SET_PRISTINE:
- newState = DEFAULT_STATE;
- break;
- case SET_IDLE:
- newState =
- state.status !== IDLE
- ? {
- ...state,
- status: IDLE,
- }
- : state;
- break;
- case SET_DISABLED:
- newState =
- state.status !== DISABLED
- ? {
- ...state,
- status: DISABLED,
- }
- : state;
- break;
- case SET_QUANTITY:
- newState =
- quantity !== state.quantity
- ? {
- ...state,
- quantity,
- }
- : state;
- break;
- case SET_REQUEST_PARAMS:
- newState = {
- ...state,
- requestParams: {
- ...state.requestParams,
- ...data,
- },
- };
- break;
- case SET_PROCESSING_RESPONSE:
- newState = {
- ...state,
- processingResponse: data,
- };
- break;
- case SET_PROCESSING:
- newState =
- state.status !== PROCESSING
- ? {
- ...state,
- status: PROCESSING,
- hasError: false,
- }
- : state;
- // clear any error state.
- newState =
- newState.hasError === false
- ? newState
- : { ...newState, hasError: false };
- break;
- case SET_BEFORE_PROCESSING:
- newState =
- state.status !== BEFORE_PROCESSING
- ? {
- ...state,
- status: BEFORE_PROCESSING,
- hasError: false,
- }
- : state;
- break;
- case SET_AFTER_PROCESSING:
- newState =
- state.status !== AFTER_PROCESSING
- ? {
- ...state,
- status: AFTER_PROCESSING,
- }
- : state;
- break;
- case SET_HAS_ERROR:
- newState = state.hasError
- ? state
- : {
- ...state,
- hasError: true,
- };
- newState =
- state.status === PROCESSING ||
- state.status === BEFORE_PROCESSING
- ? {
- ...newState,
- status: IDLE,
- }
- : newState;
- break;
- case SET_NO_ERROR:
- newState = state.hasError
- ? {
- ...state,
- hasError: false,
- }
- : state;
- break;
- }
- // automatically update state to idle from pristine as soon as it initially changes.
- if (
- newState !== state &&
- type !== SET_PRISTINE &&
- newState.status === PRISTINE
- ) {
- newState.status = IDLE;
- }
- return newState;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/index.js
deleted file mode 100644
index 16ae0ea7..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/index.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Internal dependencies
- */
-import { AddToCartFormStateContextProvider } from '../form-state';
-import FormSubmit from './submit';
-
-/**
- * Add to cart form provider.
- *
- * This wraps the add to cart form and provides an api interface for children via various hooks.
- *
- * @param {Object} props Incoming props for the provider.
- * @param {Object} props.children The children being wrapped.
- * @param {Object} [props.product] The product for which the form belongs to.
- * @param {boolean} [props.showFormElements] Should form elements be shown.
- */
-export const AddToCartFormContextProvider = ( {
- children,
- product,
- showFormElements,
-} ) => {
- return (
-
- { children }
-
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/submit/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/submit/index.js
deleted file mode 100644
index c844da88..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/form/submit/index.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import triggerFetch from '@wordpress/api-fetch';
-import { useEffect, useCallback, useState } from '@wordpress/element';
-import { decodeEntities } from '@wordpress/html-entities';
-import { triggerAddedToCartEvent } from '@woocommerce/base-utils';
-import { useDispatch, useSelect } from '@wordpress/data';
-import { VALIDATION_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { useAddToCartFormContext } from '../../form-state';
-import { useStoreCart } from '../../../../hooks/cart/use-store-cart';
-
-/**
- * FormSubmit.
- *
- * Subscribes to add to cart form context and triggers processing via the API.
- */
-const FormSubmit = () => {
- const {
- dispatchActions,
- product,
- quantity,
- eventRegistration,
- hasError,
- isProcessing,
- requestParams,
- } = useAddToCartFormContext();
- const { showAllValidationErrors } = useDispatch( VALIDATION_STORE_KEY );
- const hasValidationErrors = useSelect( ( select ) => {
- const store = select( VALIDATION_STORE_KEY );
- return store.hasValidationErrors;
- } );
- const { createErrorNotice, removeNotice } = useDispatch( 'core/notices' );
- const { receiveCart } = useStoreCart();
- const [ isSubmitting, setIsSubmitting ] = useState( false );
- const doSubmit = ! hasError && isProcessing;
-
- const checkValidationContext = useCallback( () => {
- if ( hasValidationErrors() ) {
- showAllValidationErrors();
- return {
- type: 'error',
- };
- }
- return true;
- }, [ hasValidationErrors, showAllValidationErrors ] );
-
- // Subscribe to emitter before processing.
- useEffect( () => {
- const unsubscribeProcessing =
- eventRegistration.onAddToCartBeforeProcessing(
- checkValidationContext,
- 0
- );
- return () => {
- unsubscribeProcessing();
- };
- }, [ eventRegistration, checkValidationContext ] );
-
- // Triggers form submission to the API.
- const submitFormCallback = useCallback( () => {
- setIsSubmitting( true );
- removeNotice(
- 'add-to-cart',
- `woocommerce/single-product/${ product?.id || 0 }`
- );
-
- const fetchData = {
- id: product.id || 0,
- quantity,
- ...requestParams,
- };
-
- triggerFetch( {
- path: '/wc/store/v1/cart/add-item',
- method: 'POST',
- data: fetchData,
- cache: 'no-store',
- parse: false,
- } )
- .then( ( fetchResponse ) => {
- // Update nonce.
- triggerFetch.setNonce( fetchResponse.headers );
-
- // Handle response.
- fetchResponse.json().then( function ( response ) {
- if ( ! fetchResponse.ok ) {
- // We received an error response.
- if ( response.body && response.body.message ) {
- createErrorNotice(
- decodeEntities( response.body.message ),
- {
- id: 'add-to-cart',
- context: `woocommerce/single-product/${
- product?.id || 0
- }`,
- }
- );
- } else {
- createErrorNotice(
- __(
- 'Something went wrong. Please contact us for assistance.',
- 'woocommerce'
- ),
- {
- id: 'add-to-cart',
- context: `woocommerce/single-product/${
- product?.id || 0
- }`,
- }
- );
- }
- dispatchActions.setHasError();
- } else {
- receiveCart( response );
- }
- triggerAddedToCartEvent( { preserveCartData: true } );
- dispatchActions.setAfterProcessing( response );
- setIsSubmitting( false );
- } );
- } )
- .catch( ( error ) => {
- error.json().then( function ( response ) {
- // If updated cart state was returned, also update that.
- if ( response.data?.cart ) {
- receiveCart( response.data.cart );
- }
- dispatchActions.setHasError();
- dispatchActions.setAfterProcessing( response );
- setIsSubmitting( false );
- } );
- } );
- }, [
- product,
- createErrorNotice,
- removeNotice,
- receiveCart,
- dispatchActions,
- quantity,
- requestParams,
- ] );
-
- useEffect( () => {
- if ( doSubmit && ! isSubmitting ) {
- submitFormCallback();
- }
- }, [ doSubmit, submitFormCallback, isSubmitting ] );
-
- return null;
-};
-
-export default FormSubmit;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/index.js
deleted file mode 100644
index c2bc8980..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/add-to-cart-form/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './form';
-export * from './form-state';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/event-emit.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/event-emit.ts
deleted file mode 100644
index ac6ed876..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/event-emit.ts
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * External dependencies
- */
-import { useMemo } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import {
- emitterCallback,
- reducer,
- emitEvent,
- emitEventWithAbort,
- ActionType,
-} from '../../../event-emit';
-
-// These events are emitted when the Cart status is BEFORE_PROCESSING and AFTER_PROCESSING
-// to enable third parties to hook into the cart process
-const EVENTS = {
- PROCEED_TO_CHECKOUT: 'cart_proceed_to_checkout',
-};
-
-type EventEmittersType = Record< string, ReturnType< typeof emitterCallback > >;
-
-/**
- * Receives a reducer dispatcher and returns an object with the
- * various event emitters for the payment processing events.
- *
- * Calling the event registration function with the callback will register it
- * for the event emitter and will return a dispatcher for removing the
- * registered callback (useful for implementation in `useEffect`).
- *
- * @param {Function} observerDispatch The emitter reducer dispatcher.
- * @return {Object} An object with the various payment event emitter registration functions
- */
-const useEventEmitters = (
- observerDispatch: React.Dispatch< ActionType >
-): EventEmittersType => {
- const eventEmitters = useMemo(
- () => ( {
- onProceedToCheckout: emitterCallback(
- EVENTS.PROCEED_TO_CHECKOUT,
- observerDispatch
- ),
- } ),
- [ observerDispatch ]
- );
- return eventEmitters;
-};
-
-export { EVENTS, useEventEmitters, reducer, emitEvent, emitEventWithAbort };
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/index.tsx
deleted file mode 100644
index 90a4998f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/index.tsx
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * External dependencies
- */
-
-import {
- createContext,
- useContext,
- useReducer,
- useRef,
- useEffect,
-} from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import {
- useEventEmitters,
- reducer as emitReducer,
- emitEventWithAbort,
- EVENTS,
-} from './event-emit';
-import type { emitterCallback } from '../../../event-emit';
-
-type CartEventsContextType = {
- // Used to register a callback that will fire when the cart has been processed and has an error.
- onProceedToCheckout: ReturnType< typeof emitterCallback >;
- // Used to register a callback that will fire when the cart has been processed and has an error.
- dispatchOnProceedToCheckout: () => Promise< unknown[] >;
-};
-
-const CartEventsContext = createContext< CartEventsContextType >( {
- onProceedToCheckout: () => () => void null,
- dispatchOnProceedToCheckout: () => new Promise( () => void null ),
-} );
-
-export const useCartEventsContext = () => {
- return useContext( CartEventsContext );
-};
-
-/**
- * Checkout Events provider
- * Emit Checkout events and provide access to Checkout event handlers
- *
- * @param {Object} props Incoming props for the provider.
- * @param {Object} props.children The children being wrapped.
- */
-export const CartEventsProvider = ( {
- children,
-}: {
- children: React.ReactNode;
-} ): JSX.Element => {
- const [ observers, observerDispatch ] = useReducer( emitReducer, {} );
- const currentObservers = useRef( observers );
- const { onProceedToCheckout } = useEventEmitters( observerDispatch );
-
- // set observers on ref so it's always current.
- useEffect( () => {
- currentObservers.current = observers;
- }, [ observers ] );
-
- const dispatchOnProceedToCheckout = async () => {
- return await emitEventWithAbort(
- currentObservers.current,
- EVENTS.PROCEED_TO_CHECKOUT,
- null
- );
- };
-
- const cartEvents = {
- onProceedToCheckout,
- dispatchOnProceedToCheckout,
- };
- return (
-
- { children }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/test/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/test/index.tsx
deleted file mode 100644
index 48ab1115..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart-events/test/index.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import { useCartEventsContext } from '@woocommerce/base-context';
-import { useEffect } from '@wordpress/element';
-import { render, screen, waitFor } from '@testing-library/react';
-
-/**
- * Internal dependencies
- */
-import { CartEventsProvider } from '../index';
-import Block from '../../../../../../blocks/cart/inner-blocks/proceed-to-checkout-block/block';
-
-describe( 'CartEventsProvider', () => {
- it( 'allows observers to unsubscribe', async () => {
- const mockObserver = jest.fn().mockReturnValue( { type: 'error' } );
- const MockObserverComponent = () => {
- const { onProceedToCheckout } = useCartEventsContext();
- useEffect( () => {
- const unsubscribe = onProceedToCheckout( () => {
- mockObserver();
- unsubscribe();
- } );
- }, [ onProceedToCheckout ] );
- return Mock observer
;
- };
-
- render(
-
-
-
-
-
-
- );
- expect( screen.getByText( 'Mock observer' ) ).toBeInTheDocument();
- const button = screen.getByText( 'Proceed to Checkout' );
-
- // Forcibly set the button URL to # to prevent JSDOM error: `["Error: Not implemented: navigation (except hash changes)`
- button.parentElement?.removeAttribute( 'href' );
-
- // Click twice. The observer should unsubscribe after the first click.
- button.click();
- button.click();
- await waitFor( () => {
- expect( mockObserver ).toHaveBeenCalledTimes( 1 );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart/index.js
deleted file mode 100644
index dfa4307b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/cart/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Internal dependencies
- */
-import { CheckoutProvider } from '../checkout-provider';
-
-/**
- * Cart provider
- * This wraps the Cart and provides an api interface for the Cart to
- * children via various hooks.
- *
- * @param {Object} props Incoming props for the provider.
- * @param {Object} [props.children] The children being wrapped.
- * @param {string} [props.redirectUrl] Initialize what the cart will
- * redirect to after successful
- * submit.
- */
-export const CartProvider = ( { children, redirectUrl } ) => {
- return (
-
- { children }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/event-emit.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/event-emit.ts
deleted file mode 100644
index a8826a10..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/event-emit.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * External dependencies
- */
-import { useMemo } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import {
- emitterCallback,
- reducer,
- emitEvent,
- emitEventWithAbort,
- ActionType,
-} from '../../../event-emit';
-
-// These events are emitted when the Checkout status is BEFORE_PROCESSING and AFTER_PROCESSING
-// to enable third parties to hook into the checkout process
-const EVENTS = {
- CHECKOUT_SUCCESS: 'checkout_success',
- CHECKOUT_FAIL: 'checkout_fail',
- CHECKOUT_VALIDATION: 'checkout_validation',
-};
-
-type EventEmittersType = Record< string, ReturnType< typeof emitterCallback > >;
-
-/**
- * Receives a reducer dispatcher and returns an object with the
- * various event emitters for the payment processing events.
- *
- * Calling the event registration function with the callback will register it
- * for the event emitter and will return a dispatcher for removing the
- * registered callback (useful for implementation in `useEffect`).
- *
- * @param {Function} observerDispatch The emitter reducer dispatcher.
- * @return {Object} An object with the various payment event emitter registration functions
- */
-const useEventEmitters = (
- observerDispatch: React.Dispatch< ActionType >
-): EventEmittersType => {
- const eventEmitters = useMemo(
- () => ( {
- onCheckoutSuccess: emitterCallback(
- EVENTS.CHECKOUT_SUCCESS,
- observerDispatch
- ),
- onCheckoutFail: emitterCallback(
- EVENTS.CHECKOUT_FAIL,
- observerDispatch
- ),
- onCheckoutValidation: emitterCallback(
- EVENTS.CHECKOUT_VALIDATION,
- observerDispatch
- ),
- } ),
- [ observerDispatch ]
- );
- return eventEmitters;
-};
-
-export { EVENTS, useEventEmitters, reducer, emitEvent, emitEventWithAbort };
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/index.tsx
deleted file mode 100644
index ff888086..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-events/index.tsx
+++ /dev/null
@@ -1,319 +0,0 @@
-/**
- * External dependencies
- */
-
-import {
- createContext,
- useContext,
- useReducer,
- useRef,
- useMemo,
- useEffect,
- useCallback,
-} from '@wordpress/element';
-import { usePrevious } from '@woocommerce/base-hooks';
-import deprecated from '@wordpress/deprecated';
-import { useDispatch, useSelect } from '@wordpress/data';
-import {
- CHECKOUT_STORE_KEY,
- PAYMENT_STORE_KEY,
- VALIDATION_STORE_KEY,
-} from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import { useEventEmitters, reducer as emitReducer } from './event-emit';
-import { emitterCallback, noticeContexts } from '../../../event-emit';
-import { useStoreEvents } from '../../../hooks/use-store-events';
-import {
- getExpressPaymentMethods,
- getPaymentMethods,
-} from '../../../../../blocks-registry/payment-methods/registry';
-import { useEditorContext } from '../../editor-context';
-
-type CheckoutEventsContextType = {
- // Submits the checkout and begins processing.
- onSubmit: () => void;
- // Deprecated in favour of onCheckoutSuccess.
- onCheckoutAfterProcessingWithSuccess: ReturnType< typeof emitterCallback >;
- // Deprecated in favour of onCheckoutFail.
- onCheckoutAfterProcessingWithError: ReturnType< typeof emitterCallback >;
- // Deprecated in favour of onCheckoutValidationBeforeProcessing.
- onCheckoutBeforeProcessing: ReturnType< typeof emitterCallback >;
- // Deprecated in favour of onCheckoutValidation.
- onCheckoutValidationBeforeProcessing: ReturnType< typeof emitterCallback >;
- // Used to register a callback that will fire if the api call to /checkout is successful
- onCheckoutSuccess: ReturnType< typeof emitterCallback >;
- // Used to register a callback that will fire if the api call to /checkout fails
- onCheckoutFail: ReturnType< typeof emitterCallback >;
- // Used to register a callback that will fire when the checkout performs validation on the form
- onCheckoutValidation: ReturnType< typeof emitterCallback >;
-};
-
-const CheckoutEventsContext = createContext< CheckoutEventsContextType >( {
- onSubmit: () => void null,
- onCheckoutAfterProcessingWithSuccess: () => () => void null, // deprecated for onCheckoutSuccess
- onCheckoutAfterProcessingWithError: () => () => void null, // deprecated for onCheckoutFail
- onCheckoutBeforeProcessing: () => () => void null, // deprecated for onCheckoutValidationBeforeProcessing
- onCheckoutValidationBeforeProcessing: () => () => void null, // deprecated for onCheckoutValidation
- onCheckoutSuccess: () => () => void null,
- onCheckoutFail: () => () => void null,
- onCheckoutValidation: () => () => void null,
-} );
-
-export const useCheckoutEventsContext = () => {
- return useContext( CheckoutEventsContext );
-};
-
-/**
- * Checkout Events provider
- * Emit Checkout events and provide access to Checkout event handlers
- *
- * @param {Object} props Incoming props for the provider.
- * @param {Object} props.children The children being wrapped.
- * @param {string} props.redirectUrl Initialize what the checkout will redirect to after successful submit.
- */
-export const CheckoutEventsProvider = ( {
- children,
- redirectUrl,
-}: {
- children: React.ReactChildren;
- redirectUrl: string;
-} ): JSX.Element => {
- const paymentMethods = getPaymentMethods();
- const expressPaymentMethods = getExpressPaymentMethods();
- const { isEditor } = useEditorContext();
-
- const { __internalUpdateAvailablePaymentMethods } =
- useDispatch( PAYMENT_STORE_KEY );
-
- // Update the payment method store when paymentMethods or expressPaymentMethods changes.
- // Ensure this happens in the editor even if paymentMethods is empty. This won't happen instantly when the objects
- // are updated, but on the next re-render.
- useEffect( () => {
- if (
- ! isEditor &&
- Object.keys( paymentMethods ).length === 0 &&
- Object.keys( expressPaymentMethods ).length === 0
- ) {
- return;
- }
- __internalUpdateAvailablePaymentMethods();
- }, [
- isEditor,
- paymentMethods,
- expressPaymentMethods,
- __internalUpdateAvailablePaymentMethods,
- ] );
-
- const {
- __internalSetRedirectUrl,
- __internalEmitValidateEvent,
- __internalEmitAfterProcessingEvents,
- __internalSetBeforeProcessing,
- } = useDispatch( CHECKOUT_STORE_KEY );
-
- const {
- checkoutRedirectUrl,
- checkoutStatus,
- isCheckoutBeforeProcessing,
- isCheckoutAfterProcessing,
- checkoutHasError,
- checkoutOrderId,
- checkoutOrderNotes,
- checkoutCustomerId,
- } = useSelect( ( select ) => {
- const store = select( CHECKOUT_STORE_KEY );
- return {
- checkoutRedirectUrl: store.getRedirectUrl(),
- checkoutStatus: store.getCheckoutStatus(),
- isCheckoutBeforeProcessing: store.isBeforeProcessing(),
- isCheckoutAfterProcessing: store.isAfterProcessing(),
- checkoutHasError: store.hasError(),
- checkoutOrderId: store.getOrderId(),
- checkoutOrderNotes: store.getOrderNotes(),
- checkoutCustomerId: store.getCustomerId(),
- };
- } );
-
- if ( redirectUrl && redirectUrl !== checkoutRedirectUrl ) {
- __internalSetRedirectUrl( redirectUrl );
- }
-
- const { setValidationErrors } = useDispatch( VALIDATION_STORE_KEY );
- const { dispatchCheckoutEvent } = useStoreEvents();
- const { checkoutNotices, paymentNotices, expressPaymentNotices } =
- useSelect( ( select ) => {
- const { getNotices } = select( 'core/notices' );
- const checkoutContexts = Object.values( noticeContexts ).filter(
- ( context ) =>
- context !== noticeContexts.PAYMENTS &&
- context !== noticeContexts.EXPRESS_PAYMENTS
- );
- const allCheckoutNotices = checkoutContexts.reduce(
- ( acc, context ) => {
- return [ ...acc, ...getNotices( context ) ];
- },
- []
- );
- return {
- checkoutNotices: allCheckoutNotices,
- paymentNotices: getNotices( noticeContexts.PAYMENTS ),
- expressPaymentNotices: getNotices(
- noticeContexts.EXPRESS_PAYMENTS
- ),
- };
- }, [] );
-
- const [ observers, observerDispatch ] = useReducer( emitReducer, {} );
- const currentObservers = useRef( observers );
- const { onCheckoutValidation, onCheckoutSuccess, onCheckoutFail } =
- useEventEmitters( observerDispatch );
-
- // set observers on ref so it's always current.
- useEffect( () => {
- currentObservers.current = observers;
- }, [ observers ] );
-
- /**
- * @deprecated use onCheckoutValidation instead
- *
- * To prevent the deprecation message being shown at render time
- * we need an extra function between useMemo and event emitters
- * so that the deprecated message gets shown only at invocation time.
- * (useMemo calls the passed function at render time)
- * See: https://github.com/woocommerce/woocommerce-gutenberg-products-block/pull/4039/commits/a502d1be8828848270993264c64220731b0ae181
- */
- const onCheckoutBeforeProcessing = useMemo( () => {
- return function ( ...args: Parameters< typeof onCheckoutValidation > ) {
- deprecated( 'onCheckoutBeforeProcessing', {
- alternative: 'onCheckoutValidation',
- plugin: 'WooCommerce Blocks',
- } );
- return onCheckoutValidation( ...args );
- };
- }, [ onCheckoutValidation ] );
-
- /**
- * @deprecated use onCheckoutValidation instead
- */
- const onCheckoutValidationBeforeProcessing = useMemo( () => {
- return function ( ...args: Parameters< typeof onCheckoutValidation > ) {
- deprecated( 'onCheckoutValidationBeforeProcessing', {
- since: '9.7.0',
- alternative: 'onCheckoutValidation',
- plugin: 'WooCommerce Blocks',
- link: 'https://github.com/woocommerce/woocommerce-blocks/pull/8381',
- } );
- return onCheckoutValidation( ...args );
- };
- }, [ onCheckoutValidation ] );
-
- /**
- * @deprecated use onCheckoutSuccess instead
- */
- const onCheckoutAfterProcessingWithSuccess = useMemo( () => {
- return function ( ...args: Parameters< typeof onCheckoutSuccess > ) {
- deprecated( 'onCheckoutAfterProcessingWithSuccess', {
- since: '9.7.0',
- alternative: 'onCheckoutSuccess',
- plugin: 'WooCommerce Blocks',
- link: 'https://github.com/woocommerce/woocommerce-blocks/pull/8381',
- } );
- return onCheckoutSuccess( ...args );
- };
- }, [ onCheckoutSuccess ] );
-
- /**
- * @deprecated use onCheckoutFail instead
- */
- const onCheckoutAfterProcessingWithError = useMemo( () => {
- return function ( ...args: Parameters< typeof onCheckoutFail > ) {
- deprecated( 'onCheckoutAfterProcessingWithError', {
- since: '9.7.0',
- alternative: 'onCheckoutFail',
- plugin: 'WooCommerce Blocks',
- link: 'https://github.com/woocommerce/woocommerce-blocks/pull/8381',
- } );
- return onCheckoutFail( ...args );
- };
- }, [ onCheckoutFail ] );
-
- // Emit CHECKOUT_VALIDATE event and set the error state based on the response of
- // the registered callbacks
- useEffect( () => {
- if ( isCheckoutBeforeProcessing ) {
- __internalEmitValidateEvent( {
- observers: currentObservers.current,
- setValidationErrors,
- } );
- }
- }, [
- isCheckoutBeforeProcessing,
- setValidationErrors,
- __internalEmitValidateEvent,
- ] );
-
- const previousStatus = usePrevious( checkoutStatus );
- const previousHasError = usePrevious( checkoutHasError );
-
- // Emit CHECKOUT_SUCCESS and CHECKOUT_FAIL events
- // and set checkout errors according to the callback responses
- useEffect( () => {
- if (
- checkoutStatus === previousStatus &&
- checkoutHasError === previousHasError
- ) {
- return;
- }
-
- if ( isCheckoutAfterProcessing ) {
- __internalEmitAfterProcessingEvents( {
- observers: currentObservers.current,
- notices: {
- checkoutNotices,
- paymentNotices,
- expressPaymentNotices,
- },
- } );
- }
- }, [
- checkoutStatus,
- checkoutHasError,
- checkoutRedirectUrl,
- checkoutOrderId,
- checkoutCustomerId,
- checkoutOrderNotes,
- isCheckoutAfterProcessing,
- isCheckoutBeforeProcessing,
- previousStatus,
- previousHasError,
- checkoutNotices,
- expressPaymentNotices,
- paymentNotices,
- __internalEmitValidateEvent,
- __internalEmitAfterProcessingEvents,
- ] );
-
- const onSubmit = useCallback( () => {
- dispatchCheckoutEvent( 'submit' );
- __internalSetBeforeProcessing();
- }, [ dispatchCheckoutEvent, __internalSetBeforeProcessing ] );
-
- const checkoutEventHandlers = {
- onSubmit,
- onCheckoutBeforeProcessing,
- onCheckoutValidationBeforeProcessing,
- onCheckoutAfterProcessingWithSuccess,
- onCheckoutAfterProcessingWithError,
- onCheckoutSuccess,
- onCheckoutFail,
- onCheckoutValidation,
- };
- return (
-
- { children }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-processor.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-processor.ts
deleted file mode 100644
index e35c5d4f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-processor.ts
+++ /dev/null
@@ -1,344 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import triggerFetch from '@wordpress/api-fetch';
-import {
- useEffect,
- useRef,
- useCallback,
- useState,
- useMemo,
-} from '@wordpress/element';
-import {
- emptyHiddenAddressFields,
- removeAllNotices,
-} from '@woocommerce/base-utils';
-import { useDispatch, useSelect, select as selectStore } from '@wordpress/data';
-import {
- CHECKOUT_STORE_KEY,
- PAYMENT_STORE_KEY,
- VALIDATION_STORE_KEY,
- CART_STORE_KEY,
- processErrorResponse,
-} from '@woocommerce/block-data';
-import {
- getPaymentMethods,
- getExpressPaymentMethods,
-} from '@woocommerce/blocks-registry';
-import {
- ApiResponse,
- CheckoutResponseSuccess,
- CheckoutResponseError,
- assertResponseIsValid,
-} from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import { preparePaymentData, processCheckoutResponseHeaders } from './utils';
-import { useCheckoutEventsContext } from './checkout-events';
-import { useShippingDataContext } from './shipping';
-import { useStoreCart } from '../../hooks/cart/use-store-cart';
-
-/**
- * CheckoutProcessor component.
- *
- * Subscribes to checkout context and triggers processing via the API.
- */
-const CheckoutProcessor = () => {
- const { onCheckoutValidation } = useCheckoutEventsContext();
-
- const {
- hasError: checkoutHasError,
- redirectUrl,
- isProcessing: checkoutIsProcessing,
- isBeforeProcessing: checkoutIsBeforeProcessing,
- isComplete: checkoutIsComplete,
- orderNotes,
- shouldCreateAccount,
- extensionData,
- customerId,
- } = useSelect( ( select ) => {
- const store = select( CHECKOUT_STORE_KEY );
- return {
- hasError: store.hasError(),
- redirectUrl: store.getRedirectUrl(),
- isProcessing: store.isProcessing(),
- isBeforeProcessing: store.isBeforeProcessing(),
- isComplete: store.isComplete(),
- orderNotes: store.getOrderNotes(),
- shouldCreateAccount: store.getShouldCreateAccount(),
- extensionData: store.getExtensionData(),
- customerId: store.getCustomerId(),
- };
- } );
-
- const { __internalSetHasError, __internalProcessCheckoutResponse } =
- useDispatch( CHECKOUT_STORE_KEY );
-
- const hasValidationErrors = useSelect(
- ( select ) => select( VALIDATION_STORE_KEY ).hasValidationErrors
- );
- const { shippingErrorStatus } = useShippingDataContext();
-
- const { billingAddress, shippingAddress } = useSelect( ( select ) =>
- select( CART_STORE_KEY ).getCustomerData()
- );
-
- const { cartNeedsPayment, cartNeedsShipping, receiveCartContents } =
- useStoreCart();
-
- const {
- activePaymentMethod,
- paymentMethodData,
- isExpressPaymentMethodActive,
- hasPaymentError,
- isPaymentReady,
- shouldSavePayment,
- } = useSelect( ( select ) => {
- const store = select( PAYMENT_STORE_KEY );
-
- return {
- activePaymentMethod: store.getActivePaymentMethod(),
- paymentMethodData: store.getPaymentMethodData(),
- isExpressPaymentMethodActive: store.isExpressPaymentMethodActive(),
- hasPaymentError: store.hasPaymentError(),
- isPaymentReady: store.isPaymentReady(),
- shouldSavePayment: store.getShouldSavePaymentMethod(),
- };
- }, [] );
-
- const paymentMethods = getPaymentMethods();
- const expressPaymentMethods = getExpressPaymentMethods();
- const currentBillingAddress = useRef( billingAddress );
- const currentShippingAddress = useRef( shippingAddress );
- const currentRedirectUrl = useRef( redirectUrl );
- const [ isProcessingOrder, setIsProcessingOrder ] = useState( false );
-
- const paymentMethodId = useMemo( () => {
- const merged = {
- ...expressPaymentMethods,
- ...paymentMethods,
- };
- return merged?.[ activePaymentMethod ]?.paymentMethodId;
- }, [ activePaymentMethod, expressPaymentMethods, paymentMethods ] );
-
- const checkoutWillHaveError =
- ( hasValidationErrors() && ! isExpressPaymentMethodActive ) ||
- hasPaymentError ||
- shippingErrorStatus.hasError;
-
- const paidAndWithoutErrors =
- ! checkoutHasError &&
- ! checkoutWillHaveError &&
- ( isPaymentReady || ! cartNeedsPayment ) &&
- checkoutIsProcessing;
-
- // Determine if checkout has an error.
- useEffect( () => {
- if (
- checkoutWillHaveError !== checkoutHasError &&
- ( checkoutIsProcessing || checkoutIsBeforeProcessing ) &&
- ! isExpressPaymentMethodActive
- ) {
- __internalSetHasError( checkoutWillHaveError );
- }
- }, [
- checkoutWillHaveError,
- checkoutHasError,
- checkoutIsProcessing,
- checkoutIsBeforeProcessing,
- isExpressPaymentMethodActive,
- __internalSetHasError,
- ] );
-
- // Keep the billing, shipping and redirectUrl current
- useEffect( () => {
- currentBillingAddress.current = billingAddress;
- currentShippingAddress.current = shippingAddress;
- currentRedirectUrl.current = redirectUrl;
- }, [ billingAddress, shippingAddress, redirectUrl ] );
-
- const checkValidation = useCallback( () => {
- if ( hasValidationErrors() ) {
- // If there is a shipping rates validation error, return the error message to be displayed.
- if (
- selectStore( VALIDATION_STORE_KEY ).getValidationError(
- 'shipping-rates-error'
- ) !== undefined
- ) {
- return {
- errorMessage: __(
- 'Sorry, this order requires a shipping option.',
- 'woo-gutenberg-products-block'
- ),
- };
- }
- return false;
- }
- if ( hasPaymentError ) {
- return {
- errorMessage: __(
- 'There was a problem with your payment option.',
- 'woo-gutenberg-products-block'
- ),
- context: 'wc/checkout/payments',
- };
- }
- if ( shippingErrorStatus.hasError ) {
- return {
- errorMessage: __(
- 'There was a problem with your shipping option.',
- 'woo-gutenberg-products-block'
- ),
- context: 'wc/checkout/shipping-methods',
- };
- }
-
- return true;
- }, [ hasValidationErrors, hasPaymentError, shippingErrorStatus.hasError ] );
-
- // Validate the checkout using the CHECKOUT_VALIDATION_BEFORE_PROCESSING event
- useEffect( () => {
- let unsubscribeProcessing: () => void;
- if ( ! isExpressPaymentMethodActive ) {
- unsubscribeProcessing = onCheckoutValidation( checkValidation, 0 );
- }
- return () => {
- if (
- ! isExpressPaymentMethodActive &&
- typeof unsubscribeProcessing === 'function'
- ) {
- unsubscribeProcessing();
- }
- };
- }, [
- onCheckoutValidation,
- checkValidation,
- isExpressPaymentMethodActive,
- ] );
-
- // Redirect when checkout is complete and there is a redirect url.
- useEffect( () => {
- if ( currentRedirectUrl.current ) {
- window.location.href = currentRedirectUrl.current;
- }
- }, [ checkoutIsComplete ] );
-
- // POST to the Store API and process and display any errors, or set order complete
- const processOrder = useCallback( async () => {
- if ( isProcessingOrder ) {
- return;
- }
- setIsProcessingOrder( true );
- removeAllNotices();
-
- const paymentData = cartNeedsPayment
- ? {
- payment_method: paymentMethodId,
- payment_data: preparePaymentData(
- paymentMethodData,
- shouldSavePayment,
- activePaymentMethod
- ),
- }
- : {};
-
- const data = {
- shipping_address: cartNeedsShipping
- ? emptyHiddenAddressFields( currentShippingAddress.current )
- : undefined,
- billing_address: emptyHiddenAddressFields(
- currentBillingAddress.current
- ),
- customer_note: orderNotes,
- create_account: shouldCreateAccount,
- ...paymentData,
- extensions: { ...extensionData },
- };
-
- triggerFetch( {
- path: '/wc/store/v1/checkout',
- method: 'POST',
- data,
- cache: 'no-store',
- parse: false,
- } )
- .then( ( response: unknown ) => {
- assertResponseIsValid< CheckoutResponseSuccess >( response );
- processCheckoutResponseHeaders( response.headers );
- if ( ! response.ok ) {
- throw response;
- }
- return response.json();
- } )
- .then( ( responseJson: CheckoutResponseSuccess ) => {
- __internalProcessCheckoutResponse( responseJson );
- setIsProcessingOrder( false );
- } )
- .catch( ( errorResponse: ApiResponse< CheckoutResponseError > ) => {
- processCheckoutResponseHeaders( errorResponse?.headers );
- try {
- // This attempts to parse a JSON error response where the status code was 4xx/5xx.
- errorResponse
- .json()
- .then(
- ( response ) => response as CheckoutResponseError
- )
- .then( ( response: CheckoutResponseError ) => {
- if ( response.data?.cart ) {
- // We don't want to receive the address here because it will overwrite fields.
- receiveCartContents( response.data.cart );
- }
- processErrorResponse( response );
- __internalProcessCheckoutResponse( response );
- } );
- } catch {
- let errorMessage = __(
- 'Something went wrong when placing the order. Check your email for order updates before retrying.',
- 'woo-gutenberg-products-block'
- );
-
- if ( customerId !== 0 ) {
- errorMessage = __(
- "Something went wrong when placing the order. Check your account's order history or your email for order updates before retrying.",
- 'woo-gutenberg-products-block'
- );
- }
- processErrorResponse( {
- code: 'unknown_error',
- message: errorMessage,
- data: null,
- } );
- }
- __internalSetHasError( true );
- setIsProcessingOrder( false );
- } );
- }, [
- isProcessingOrder,
- cartNeedsPayment,
- paymentMethodId,
- paymentMethodData,
- shouldSavePayment,
- activePaymentMethod,
- orderNotes,
- shouldCreateAccount,
- extensionData,
- cartNeedsShipping,
- receiveCartContents,
- __internalSetHasError,
- __internalProcessCheckoutResponse,
- ] );
-
- // Process order if conditions are good.
- useEffect( () => {
- if ( paidAndWithoutErrors && ! isProcessingOrder ) {
- processOrder();
- }
- }, [ processOrder, paidAndWithoutErrors, isProcessingOrder ] );
-
- return null;
-};
-
-export default CheckoutProcessor;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-provider.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-provider.js
deleted file mode 100644
index 0a919839..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/checkout-provider.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * External dependencies
- */
-import { PluginArea } from '@wordpress/plugins';
-import { CURRENT_USER_IS_ADMIN } from '@woocommerce/settings';
-import BlockErrorBoundary from '@woocommerce/base-components/block-error-boundary';
-/**
- * Internal dependencies
- */
-import { PaymentEventsProvider } from './payment-events';
-import { ShippingDataProvider } from './shipping';
-import { CheckoutEventsProvider } from './checkout-events';
-import CheckoutProcessor from './checkout-processor';
-
-/**
- * Checkout provider
- * This wraps the checkout and provides an api interface for the checkout to
- * children via various hooks.
- *
- * @param {Object} props Incoming props for the provider.
- * @param {Object} props.children The children being wrapped.
- * component.
- * @param {string} [props.redirectUrl] Initialize what the checkout will
- * redirect to after successful
- * submit.
- */
-export const CheckoutProvider = ( { children, redirectUrl } ) => {
- return (
-
-
-
- { children }
- { /* If the current user is an admin, we let BlockErrorBoundary render
- the error, or we simply die silently. */ }
- null
- }
- >
-
-
-
-
-
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/index.js
deleted file mode 100644
index 67d6fb0b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-export * from './payment-events';
-export * from './shipping';
-export * from './checkout-events';
-export * from './cart-events';
-export * from './cart';
-export * from './checkout-processor';
-export * from './checkout-provider';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/event-emit.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/event-emit.ts
deleted file mode 100644
index af211ca4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/event-emit.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * External dependencies
- */
-import { useMemo } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import {
- reducer,
- emitEvent,
- emitEventWithAbort,
- emitterCallback,
- ActionType,
-} from '../../../event-emit';
-
-const EMIT_TYPES = {
- PAYMENT_SETUP: 'payment_setup',
-};
-
-type EventEmittersType = Record< string, ReturnType< typeof emitterCallback > >;
-
-/**
- * Receives a reducer dispatcher and returns an object with the
- * various event emitters for the payment processing events.
- *
- * Calling the event registration function with the callback will register it
- * for the event emitter and will return a dispatcher for removing the
- * registered callback (useful for implementation in `useEffect`).
- *
- * @param {Function} observerDispatch The emitter reducer dispatcher.
- * @return {Object} An object with the various payment event emitter registration functions
- */
-const useEventEmitters = (
- observerDispatch: React.Dispatch< ActionType >
-): EventEmittersType => {
- const eventEmitters = useMemo(
- () => ( {
- onPaymentSetup: emitterCallback(
- EMIT_TYPES.PAYMENT_SETUP,
- observerDispatch
- ),
- } ),
- [ observerDispatch ]
- );
- return eventEmitters;
-};
-
-export { EMIT_TYPES, useEventEmitters, reducer, emitEvent, emitEventWithAbort };
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/index.tsx
deleted file mode 100644
index 76da0860..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/payment-events/index.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * External dependencies
- */
-import {
- createContext,
- useContext,
- useReducer,
- useRef,
- useEffect,
- useMemo,
-} from '@wordpress/element';
-import { useDispatch, useSelect } from '@wordpress/data';
-import {
- CHECKOUT_STORE_KEY,
- PAYMENT_STORE_KEY,
- VALIDATION_STORE_KEY,
-} from '@woocommerce/block-data';
-import deprecated from '@wordpress/deprecated';
-
-/**
- * Internal dependencies
- */
-import { useEventEmitters, reducer as emitReducer } from './event-emit';
-import { emitterCallback } from '../../../event-emit';
-
-type PaymentEventsContextType = {
- // Event registration callback for registering observers for the payment processing event.
- onPaymentProcessing: ReturnType< typeof emitterCallback >;
- onPaymentSetup: ReturnType< typeof emitterCallback >;
-};
-
-const PaymentEventsContext = createContext< PaymentEventsContextType >( {
- onPaymentProcessing: () => () => () => void null,
- onPaymentSetup: () => () => () => void null,
-} );
-
-export const usePaymentEventsContext = () => {
- return useContext( PaymentEventsContext );
-};
-
-/**
- * PaymentEventsProvider is automatically included in the CheckoutProvider.
- *
- * This provides the api interface (via the context hook) for payment status and data.
- *
- * @param {Object} props Incoming props for provider
- * @param {Object} props.children The wrapped components in this provider.
- */
-export const PaymentEventsProvider = ( {
- children,
-}: {
- children: React.ReactNode;
-} ): JSX.Element => {
- const {
- isProcessing: checkoutIsProcessing,
- isIdle: checkoutIsIdle,
- isCalculating: checkoutIsCalculating,
- hasError: checkoutHasError,
- } = useSelect( ( select ) => {
- const store = select( CHECKOUT_STORE_KEY );
- return {
- isProcessing: store.isProcessing(),
- isIdle: store.isIdle(),
- hasError: store.hasError(),
- isCalculating: store.isCalculating(),
- };
- } );
- const { isPaymentReady } = useSelect( ( select ) => {
- const store = select( PAYMENT_STORE_KEY );
-
- return {
- // The PROCESSING status represents before the checkout runs the observers
- // registered for the payment_setup event.
- isPaymentProcessing: store.isPaymentProcessing(),
- // the READY status represents when the observers have finished processing and payment data
- // synced with the payment store, ready to be sent to the StoreApi
- isPaymentReady: store.isPaymentReady(),
- };
- } );
-
- const { setValidationErrors } = useDispatch( VALIDATION_STORE_KEY );
- const [ observers, observerDispatch ] = useReducer( emitReducer, {} );
- const { onPaymentSetup } = useEventEmitters( observerDispatch );
- const currentObservers = useRef( observers );
-
- // ensure observers are always current.
- useEffect( () => {
- currentObservers.current = observers;
- }, [ observers ] );
-
- const {
- __internalSetPaymentProcessing,
- __internalSetPaymentIdle,
- __internalEmitPaymentProcessingEvent,
- } = useDispatch( PAYMENT_STORE_KEY );
-
- // flip payment to processing if checkout processing is complete and there are no errors
- useEffect( () => {
- if (
- checkoutIsProcessing &&
- ! checkoutHasError &&
- ! checkoutIsCalculating
- ) {
- __internalSetPaymentProcessing();
-
- // Note: the nature of this event emitter is that it will bail on any
- // observer that returns a response that !== true. However, this still
- // allows for other observers that return true for continuing through
- // to the next observer (or bailing if there's a problem).
- __internalEmitPaymentProcessingEvent(
- currentObservers.current,
- setValidationErrors
- );
- }
- }, [
- checkoutIsProcessing,
- checkoutHasError,
- checkoutIsCalculating,
- __internalSetPaymentProcessing,
- __internalEmitPaymentProcessingEvent,
- setValidationErrors,
- ] );
-
- // When checkout is returned to idle, and the payment setup has not completed, set payment status to idle
- useEffect( () => {
- if ( checkoutIsIdle && ! isPaymentReady ) {
- __internalSetPaymentIdle();
- }
- }, [ checkoutIsIdle, isPaymentReady, __internalSetPaymentIdle ] );
-
- // if checkout has an error sync payment status back to idle.
- useEffect( () => {
- if ( checkoutHasError && isPaymentReady ) {
- __internalSetPaymentIdle();
- }
- }, [ checkoutHasError, isPaymentReady, __internalSetPaymentIdle ] );
-
- /**
- * @deprecated use onPaymentSetup instead
- */
- const onPaymentProcessing = useMemo( () => {
- return function ( ...args: Parameters< typeof onPaymentSetup > ) {
- deprecated( 'onPaymentProcessing', {
- alternative: 'onPaymentSetup',
- plugin: 'WooCommerce Blocks',
- } );
- return onPaymentSetup( ...args );
- };
- }, [ onPaymentSetup ] );
-
- const paymentContextData = {
- onPaymentProcessing,
- onPaymentSetup,
- };
-
- return (
-
- { children }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/constants.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/constants.ts
deleted file mode 100644
index 5a311b45..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/constants.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * External dependencies
- */
-import type { CartShippingAddress } from '@woocommerce/types';
-
-/**
- * Internal dependencies
- */
-import type { ShippingDataContextType, ShippingErrorTypes } from './types';
-
-export const ERROR_TYPES = {
- NONE: 'none',
- INVALID_ADDRESS: 'invalid_address',
- UNKNOWN: 'unknown_error',
-} as ShippingErrorTypes;
-
-export const shippingErrorCodes = {
- INVALID_COUNTRY: 'woocommerce_rest_cart_shipping_rates_invalid_country',
- MISSING_COUNTRY: 'woocommerce_rest_cart_shipping_rates_missing_country',
- INVALID_STATE: 'woocommerce_rest_cart_shipping_rates_invalid_state',
-};
-
-export const DEFAULT_SHIPPING_ADDRESS = {
- first_name: '',
- last_name: '',
- company: '',
- address_1: '',
- address_2: '',
- city: '',
- state: '',
- postcode: '',
- country: '',
-} as CartShippingAddress;
-
-export const DEFAULT_SHIPPING_CONTEXT_DATA = {
- shippingErrorStatus: {
- isPristine: true,
- isValid: false,
- hasInvalidAddress: false,
- hasError: false,
- },
- dispatchErrorStatus: ( status ) => status,
- shippingErrorTypes: ERROR_TYPES,
- onShippingRateSuccess: () => () => void null,
- onShippingRateFail: () => () => void null,
- onShippingRateSelectSuccess: () => () => void null,
- onShippingRateSelectFail: () => () => void null,
-} as ShippingDataContextType;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/event-emit.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/event-emit.js
deleted file mode 100644
index 5c0a3897..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/event-emit.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Internal dependencies
- */
-import { emitterCallback, reducer, emitEvent } from '../../../event-emit';
-
-const EMIT_TYPES = {
- SHIPPING_RATES_SUCCESS: 'shipping_rates_success',
- SHIPPING_RATES_FAIL: 'shipping_rates_fail',
- SHIPPING_RATE_SELECT_SUCCESS: 'shipping_rate_select_success',
- SHIPPING_RATE_SELECT_FAIL: 'shipping_rate_select_fail',
-};
-
-/**
- * Receives a reducer dispatcher and returns an object with the onSuccess and
- * onFail callback registration points for the shipping option emit events.
- *
- * Calling the event registration function with the callback will register it
- * for the event emitter and will return a dispatcher for removing the
- * registered callback (useful for implementation in `useEffect`).
- *
- * @param {Function} dispatcher A reducer dispatcher
- * @return {Object} An object with `onSuccess` and `onFail` emitter registration.
- */
-const emitterObservers = ( dispatcher ) => ( {
- onSuccess: emitterCallback( EMIT_TYPES.SHIPPING_RATES_SUCCESS, dispatcher ),
- onFail: emitterCallback( EMIT_TYPES.SHIPPING_RATES_FAIL, dispatcher ),
- onSelectSuccess: emitterCallback(
- EMIT_TYPES.SHIPPING_RATE_SELECT_SUCCESS,
- dispatcher
- ),
- onSelectFail: emitterCallback(
- EMIT_TYPES.SHIPPING_RATE_SELECT_FAIL,
- dispatcher
- ),
-} );
-
-export { EMIT_TYPES, emitterObservers, reducer, emitEvent };
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/index.tsx
deleted file mode 100644
index 9393de50..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/index.tsx
+++ /dev/null
@@ -1,203 +0,0 @@
-/**
- * External dependencies
- */
-import {
- createContext,
- useContext,
- useReducer,
- useEffect,
- useMemo,
- useRef,
-} from '@wordpress/element';
-import { useDispatch } from '@wordpress/data';
-import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Internal dependencies
- */
-import type {
- ShippingDataContextType,
- ShippingDataProviderProps,
-} from './types';
-import { ERROR_TYPES, DEFAULT_SHIPPING_CONTEXT_DATA } from './constants';
-import { hasInvalidShippingAddress } from './utils';
-import { errorStatusReducer } from './reducers';
-import {
- EMIT_TYPES,
- emitterObservers,
- reducer as emitReducer,
- emitEvent,
-} from './event-emit';
-import { useStoreCart } from '../../../hooks/cart/use-store-cart';
-import { useShippingData } from '../../../hooks/shipping/use-shipping-data';
-
-const { NONE, INVALID_ADDRESS, UNKNOWN } = ERROR_TYPES;
-const ShippingDataContext = createContext( DEFAULT_SHIPPING_CONTEXT_DATA );
-
-export const useShippingDataContext = (): ShippingDataContextType => {
- return useContext( ShippingDataContext );
-};
-
-/**
- * The shipping data provider exposes the interface for shipping in the checkout/cart.
- */
-export const ShippingDataProvider = ( {
- children,
-}: ShippingDataProviderProps ) => {
- const { __internalIncrementCalculating, __internalDecrementCalculating } =
- useDispatch( CHECKOUT_STORE_KEY );
- const { shippingRates, isLoadingRates, cartErrors } = useStoreCart();
- const { selectedRates, isSelectingRate } = useShippingData();
- const [ shippingErrorStatus, dispatchErrorStatus ] = useReducer(
- errorStatusReducer,
- NONE
- );
- const [ observers, observerDispatch ] = useReducer( emitReducer, {} );
- const currentObservers = useRef( observers );
- const eventObservers = useMemo(
- () => ( {
- onShippingRateSuccess:
- emitterObservers( observerDispatch ).onSuccess,
- onShippingRateFail: emitterObservers( observerDispatch ).onFail,
- onShippingRateSelectSuccess:
- emitterObservers( observerDispatch ).onSelectSuccess,
- onShippingRateSelectFail:
- emitterObservers( observerDispatch ).onSelectFail,
- } ),
- [ observerDispatch ]
- );
-
- // set observers on ref so it's always current.
- useEffect( () => {
- currentObservers.current = observers;
- }, [ observers ] );
-
- // increment/decrement checkout calculating counts when shipping is loading.
- useEffect( () => {
- if ( isLoadingRates ) {
- __internalIncrementCalculating();
- } else {
- __internalDecrementCalculating();
- }
- }, [
- isLoadingRates,
- __internalIncrementCalculating,
- __internalDecrementCalculating,
- ] );
-
- // increment/decrement checkout calculating counts when shipping rates are being selected.
- useEffect( () => {
- if ( isSelectingRate ) {
- __internalIncrementCalculating();
- } else {
- __internalDecrementCalculating();
- }
- }, [
- __internalIncrementCalculating,
- __internalDecrementCalculating,
- isSelectingRate,
- ] );
-
- // set shipping error status if there are shipping error codes
- useEffect( () => {
- if (
- cartErrors.length > 0 &&
- hasInvalidShippingAddress( cartErrors )
- ) {
- dispatchErrorStatus( { type: INVALID_ADDRESS } );
- } else {
- dispatchErrorStatus( { type: NONE } );
- }
- }, [ cartErrors ] );
-
- const currentErrorStatus = useMemo(
- () => ( {
- isPristine: shippingErrorStatus === NONE,
- isValid: shippingErrorStatus === NONE,
- hasInvalidAddress: shippingErrorStatus === INVALID_ADDRESS,
- hasError:
- shippingErrorStatus === UNKNOWN ||
- shippingErrorStatus === INVALID_ADDRESS,
- } ),
- [ shippingErrorStatus ]
- );
-
- // emit events.
- useEffect( () => {
- if (
- ! isLoadingRates &&
- ( shippingRates.length === 0 || currentErrorStatus.hasError )
- ) {
- emitEvent(
- currentObservers.current,
- EMIT_TYPES.SHIPPING_RATES_FAIL,
- {
- hasInvalidAddress: currentErrorStatus.hasInvalidAddress,
- hasError: currentErrorStatus.hasError,
- }
- );
- }
- }, [
- shippingRates,
- isLoadingRates,
- currentErrorStatus.hasError,
- currentErrorStatus.hasInvalidAddress,
- ] );
-
- useEffect( () => {
- if (
- ! isLoadingRates &&
- shippingRates.length > 0 &&
- ! currentErrorStatus.hasError
- ) {
- emitEvent(
- currentObservers.current,
- EMIT_TYPES.SHIPPING_RATES_SUCCESS,
- shippingRates
- );
- }
- }, [ shippingRates, isLoadingRates, currentErrorStatus.hasError ] );
-
- // emit shipping rate selection events.
- useEffect( () => {
- if ( isSelectingRate ) {
- return;
- }
- if ( currentErrorStatus.hasError ) {
- emitEvent(
- currentObservers.current,
- EMIT_TYPES.SHIPPING_RATE_SELECT_FAIL,
- {
- hasError: currentErrorStatus.hasError,
- hasInvalidAddress: currentErrorStatus.hasInvalidAddress,
- }
- );
- } else {
- emitEvent(
- currentObservers.current,
- EMIT_TYPES.SHIPPING_RATE_SELECT_SUCCESS,
- selectedRates.current
- );
- }
- }, [
- selectedRates,
- isSelectingRate,
- currentErrorStatus.hasError,
- currentErrorStatus.hasInvalidAddress,
- ] );
-
- const ShippingData: ShippingDataContextType = {
- shippingErrorStatus: currentErrorStatus,
- dispatchErrorStatus,
- shippingErrorTypes: ERROR_TYPES,
- ...eventObservers,
- };
-
- return (
- <>
-
- { children }
-
- >
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/reducers.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/reducers.js
deleted file mode 100644
index 1b24a004..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/reducers.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Internal dependencies
- */
-import { ERROR_TYPES } from './constants';
-
-/**
- * Reducer for shipping status state
- *
- * @param {string} state The current status.
- * @param {Object} action The incoming action.
- * @param {string} action.type The type of action.
- */
-export const errorStatusReducer = ( state, { type } ) => {
- if ( Object.values( ERROR_TYPES ).includes( type ) ) {
- return type;
- }
- return state;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/types.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/types.ts
deleted file mode 100644
index 6d5ef09b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/types.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Internal dependencies
- */
-import type { emitterCallback } from '../../../event-emit';
-
-export type ShippingErrorStatus = {
- isPristine: boolean;
- isValid: boolean;
- hasInvalidAddress: boolean;
- hasError: boolean;
-};
-
-export type ShippingErrorTypes = {
- // eslint-disable-next-line @typescript-eslint/naming-convention
- NONE: 'none';
- // eslint-disable-next-line @typescript-eslint/naming-convention
- INVALID_ADDRESS: 'invalid_address';
- // eslint-disable-next-line @typescript-eslint/naming-convention
- UNKNOWN: 'unknown_error';
-};
-
-export type ShippingDataContextType = {
- // A function for dispatching a shipping rate error status.
- dispatchErrorStatus: React.Dispatch< {
- type: string;
- } >;
- onShippingRateFail: ReturnType< typeof emitterCallback >;
- // Used to register a callback to be invoked when shipping rate is selected unsuccessfully
- onShippingRateSelectFail: ReturnType< typeof emitterCallback >;
- // Used to register a callback to be invoked when shipping rate is selected.
- onShippingRateSelectSuccess: ReturnType< typeof emitterCallback >;
- // Used to register a callback to be invoked when shipping rates are retrieved.
- onShippingRateSuccess: ReturnType< typeof emitterCallback >;
- // The current shipping error status.
- shippingErrorStatus: ShippingErrorStatus;
- // The error type constants for the shipping rate error status.
- shippingErrorTypes: ShippingErrorTypes;
-};
-
-export interface ShippingDataProviderProps {
- children: JSX.Element | JSX.Element[];
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/utils.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/utils.js
deleted file mode 100644
index 0f8a603f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/shipping/utils.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Internal dependencies
- */
-import { shippingErrorCodes } from './constants';
-
-export const hasInvalidShippingAddress = ( errors ) => {
- return errors.some( ( error ) => {
- if (
- error.code &&
- Object.values( shippingErrorCodes ).includes( error.code )
- ) {
- return true;
- }
- return false;
- } );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/utils.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/utils.ts
deleted file mode 100644
index da9044f1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/cart-checkout/utils.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * External dependencies
- */
-import triggerFetch from '@wordpress/api-fetch';
-import { dispatch } from '@wordpress/data';
-import { CHECKOUT_STORE_KEY } from '@woocommerce/block-data';
-
-/**
- * Utility function for preparing payment data for the request.
- */
-export const preparePaymentData = (
- //Arbitrary payment data provided by the payment method.
- paymentData: Record< string, unknown >,
- //Whether to save the payment method info to user account.
- shouldSave: boolean,
- //The current active payment method.
- activePaymentMethod: string
-): { key: string; value: unknown }[] => {
- const apiData = Object.keys( paymentData ).map( ( property ) => {
- const value = paymentData[ property ];
- return { key: property, value };
- }, [] );
- const savePaymentMethodKey = `wc-${ activePaymentMethod }-new-payment-method`;
- apiData.push( {
- key: savePaymentMethodKey,
- value: shouldSave,
- } );
- return apiData;
-};
-
-/**
- * Process headers from an API response an dispatch updates.
- */
-export const processCheckoutResponseHeaders = (
- headers: Headers | undefined
-): void => {
- if ( ! headers ) {
- return;
- }
- const { __internalSetCustomerId } = dispatch( CHECKOUT_STORE_KEY );
- if (
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore -- this does exist because it's monkey patched in
- // middleware/store-api-nonce.
- triggerFetch.setNonce &&
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore -- this does exist because it's monkey patched in
- // middleware/store-api-nonce.
- typeof triggerFetch.setNonce === 'function'
- ) {
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore -- this does exist because it's monkey patched in
- // middleware/store-api-nonce.
- triggerFetch.setNonce( headers );
- }
-
- // Update user using headers.
- if ( headers?.get( 'User-ID' ) ) {
- __internalSetCustomerId(
- parseInt( headers.get( 'User-ID' ) || '0', 10 )
- );
- }
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/container-width-context.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/container-width-context.tsx
deleted file mode 100644
index 3c03a107..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/container-width-context.tsx
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * External dependencies
- */
-import { createContext, useContext } from '@wordpress/element';
-import { useContainerQueries } from '@woocommerce/base-hooks';
-import classNames from 'classnames';
-
-export type ContainerWidthContextProps = {
- hasContainerWidth: boolean;
- containerClassName: string;
- isMobile: boolean;
- isSmall: boolean;
- isMedium: boolean;
- isLarge: boolean;
-};
-
-const ContainerWidthContext: React.Context< ContainerWidthContextProps > =
- createContext< ContainerWidthContextProps >( {
- hasContainerWidth: false,
- containerClassName: '',
- isMobile: false,
- isSmall: false,
- isMedium: false,
- isLarge: false,
- } );
-
-export const useContainerWidthContext = (): ContainerWidthContextProps => {
- return useContext( ContainerWidthContext );
-};
-
-interface ContainerWidthContextProviderProps {
- children: JSX.Element | JSX.Element[];
- className: string;
-}
-
-/**
- * Provides an interface to useContainerQueries so children can see what size is being used by the
- * container.
- */
-export const ContainerWidthContextProvider = ( {
- children,
- className = '',
-}: ContainerWidthContextProviderProps ): JSX.Element => {
- const [ resizeListener, containerClassName ] = useContainerQueries();
-
- const contextValue = {
- hasContainerWidth: containerClassName !== '',
- containerClassName,
- isMobile: containerClassName === 'is-mobile',
- isSmall: containerClassName === 'is-small',
- isMedium: containerClassName === 'is-medium',
- isLarge: containerClassName === 'is-large',
- };
-
- return (
-
-
- { resizeListener }
- { children }
-
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/editor-context.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/editor-context.tsx
deleted file mode 100644
index 664bbc7a..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/editor-context.tsx
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * External dependencies
- */
-import { createContext, useContext, useCallback } from '@wordpress/element';
-import { useSelect } from '@wordpress/data';
-
-interface EditorContextType {
- // Indicates whether in the editor context.
- isEditor: boolean;
-
- // The post ID being edited.
- currentPostId: number;
-
- // The current view name, if using a view switcher.
- currentView: string;
-
- // Object containing preview data for the editor.
- previewData: Record< string, unknown >;
-
- // Get data by name.
- getPreviewData: ( name: string ) => Record< string, unknown >;
-
- // Indicates whether in the preview context.
- isPreview?: boolean;
-}
-
-const EditorContext = createContext( {
- isEditor: false,
- currentPostId: 0,
- currentView: '',
- previewData: {},
- getPreviewData: () => ( {} ),
-} as EditorContextType );
-
-export const useEditorContext = (): EditorContextType => {
- return useContext( EditorContext );
-};
-
-export const EditorProvider = ( {
- children,
- currentPostId = 0,
- previewData = {},
- currentView = '',
- isPreview = false,
-}: {
- children: React.ReactChildren;
- currentPostId?: number | undefined;
- previewData?: Record< string, unknown > | undefined;
- currentView?: string | undefined;
- isPreview?: boolean | undefined;
-} ) => {
- const editingPostId = useSelect(
- ( select ): number =>
- currentPostId
- ? currentPostId
- : select( 'core/editor' ).getCurrentPostId(),
- [ currentPostId ]
- );
-
- const getPreviewData = useCallback(
- ( name: string ): Record< string, unknown > => {
- if ( previewData && name in previewData ) {
- return previewData[ name ] as Record< string, unknown >;
- }
- return {};
- },
- [ previewData ]
- );
-
- const editorData: EditorContextType = {
- isEditor: true,
- currentPostId: editingPostId,
- currentView,
- previewData,
- getPreviewData,
- isPreview,
- };
-
- return (
-
- { children }
-
- );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/index.js
deleted file mode 100644
index d02577e0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/index.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export * from './editor-context';
-export * from './add-to-cart-form';
-export * from './cart-checkout';
-export * from './container-width-context';
-export * from './editor-context';
-export * from './query-state-context';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/query-state-context.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/query-state-context.js
deleted file mode 100644
index dce9a2c4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/providers/query-state-context.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/**
- * External dependencies
- */
-import { createContext, useContext } from '@wordpress/element';
-
-/**
- * Query state context is the index for used for a query state store. By
- * exposing this via context, it allows for all children blocks to be
- * synchronized to the same query state defined by the parent in the tree.
- *
- * Defaults to 'page' for general global query state shared among all blocks
- * in a view.
- *
- * @member {Object} QueryStateContext A react context object
- */
-const QueryStateContext = createContext( 'page' );
-
-export const useQueryStateContext = () => useContext( QueryStateContext );
-export const QueryStateContextProvider = QueryStateContext.Provider;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/test/utils.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/test/utils.js
deleted file mode 100644
index b1432e98..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/test/utils.js
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Internal dependencies
- */
-import { assertValidContextValue } from '../utils';
-
-describe( 'assertValidContextValue', () => {
- const contextName = 'testContext';
- const validationMap = {
- cheeseburger: {
- required: false,
- type: 'string',
- },
- amountKetchup: {
- required: true,
- type: 'number',
- },
- };
- it.each`
- testValue
- ${ {} }
- ${ 10 }
- ${ { amountKetchup: '10' } }
- `(
- 'The value of $testValue is expected to trigger an Error',
- ( { testValue } ) => {
- const invokeTest = () => {
- assertValidContextValue(
- contextName,
- validationMap,
- testValue
- );
- };
- expect( invokeTest ).toThrow();
- }
- );
- it.each`
- testValue
- ${ { amountKetchup: 20 } }
- ${ { cheeseburger: 'fries', amountKetchup: 20 } }
- `(
- 'The value of $testValue is not expected to trigger an Error',
- ( { testValue } ) => {
- const invokeTest = () => {
- assertValidContextValue(
- contextName,
- validationMap,
- testValue
- );
- };
- expect( invokeTest ).not.toThrow();
- }
- );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/utils.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/utils.js
deleted file mode 100644
index e2a7d8b6..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/context/utils.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * This is an assertion utility for validating that the incoming value prop
- * value on a given context provider is valid and throws an error if it isn't.
- *
- * Note: this asserts values that are expected to be an object.
- *
- * The validationMap is expected to be an object in the following shape.
- *
- * {
- * [expectedPropertyName]: {
- * required: [expectedRequired]
- * type: [expectedType]
- * }
- * }
- *
- * @param {string} contextName The name of the context provider being
- * validated.
- * @param {Object} validationMap A map for validating the incoming value against.
- * @param {Object} value The value being validated.
- *
- * @throws {Error}
- */
-export const assertValidContextValue = (
- contextName,
- validationMap,
- value
-) => {
- if ( typeof value !== 'object' ) {
- throw new Error(
- `${ contextName } expects an object for its context value`
- );
- }
- const errors = [];
- for ( const expectedProperty in validationMap ) {
- if (
- validationMap[ expectedProperty ].required &&
- typeof value[ expectedProperty ] === 'undefined'
- ) {
- errors.push(
- `The ${ expectedProperty } is required and is not present.`
- );
- } else if (
- typeof value[ expectedProperty ] !== 'undefined' &&
- typeof value[ expectedProperty ] !==
- validationMap[ expectedProperty ].type
- ) {
- errors.push(
- `The ${ expectedProperty } must be of ${
- validationMap[ expectedProperty ].type
- } and instead was ${ typeof value[ expectedProperty ] }`
- );
- }
- }
- if ( errors.length > 0 ) {
- throw new Error(
- `There was a problem with the value passed in on ${ contextName }:\n ${ errors.join(
- '\n'
- ) }`
- );
- }
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/test/with-reviews.jsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/test/with-reviews.jsx
deleted file mode 100644
index 3ceb37f1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/test/with-reviews.jsx
+++ /dev/null
@@ -1,167 +0,0 @@
-// We need to disable the following eslint check as it's only applicable
-// to testing-library/react not `react-test-renderer` used here
-/* eslint-disable testing-library/await-async-query */
-/**
- * External dependencies
- */
-import TestRenderer from 'react-test-renderer';
-
-/**
- * Internal dependencies
- */
-import withReviews from '../with-reviews';
-import * as mockUtils from '../../../blocks/reviews/utils';
-import * as mockBaseUtils from '../../utils/errors';
-
-jest.mock( '../../../blocks/reviews/utils', () => ( {
- getSortArgs: () => ( {
- order: 'desc',
- orderby: 'date_gmt',
- } ),
- getReviews: jest.fn(),
-} ) );
-
-jest.mock( '../../utils/errors', () => ( {
- formatError: jest.fn(),
-} ) );
-
-const mockReviews = [
- { reviewer: 'Alice', review: 'Lorem ipsum', rating: 2 },
- { reviewer: 'Bob', review: 'Dolor sit amet', rating: 3 },
- { reviewer: 'Carol', review: 'Consectetur adipiscing elit', rating: 5 },
-];
-const defaultArgs = {
- offset: 0,
- order: 'desc',
- orderby: 'date_gmt',
- per_page: 2,
- product_id: 1,
-};
-const TestComponent = withReviews( ( props ) => {
- return (
-
- );
-} );
-const render = () => {
- return TestRenderer.create(
-
- );
-};
-
-describe( 'withReviews Component', () => {
- let renderer;
- afterEach( () => {
- mockUtils.getReviews.mockReset();
- } );
-
- describe( 'lifecycle events', () => {
- beforeEach( () => {
- mockUtils.getReviews
- .mockImplementationOnce( () =>
- Promise.resolve( {
- reviews: mockReviews.slice( 0, 2 ),
- totalReviews: mockReviews.length,
- } )
- )
- .mockImplementationOnce( () =>
- Promise.resolve( {
- reviews: mockReviews.slice( 2, 3 ),
- totalReviews: mockReviews.length,
- } )
- );
- renderer = render();
- } );
-
- it( 'getReviews is called on mount with default args', () => {
- const { getReviews } = mockUtils;
-
- expect( getReviews ).toHaveBeenCalledWith( defaultArgs );
- expect( getReviews ).toHaveBeenCalledTimes( 1 );
- } );
-
- it( 'getReviews is called on component update', () => {
- const { getReviews } = mockUtils;
- renderer.update(
-
- );
-
- expect( getReviews ).toHaveBeenNthCalledWith( 2, {
- ...defaultArgs,
- offset: 2,
- per_page: 1,
- } );
- expect( getReviews ).toHaveBeenCalledTimes( 2 );
- } );
- } );
-
- describe( 'when the API returns product data', () => {
- beforeEach( () => {
- mockUtils.getReviews.mockImplementation( () =>
- Promise.resolve( {
- reviews: mockReviews.slice( 0, 2 ),
- totalReviews: mockReviews.length,
- } )
- );
- renderer = render();
- } );
-
- it( 'sets reviews based on API response', () => {
- const props = renderer.root.findByType( 'div' ).props;
-
- expect( props[ 'data-error' ] ).toBeNull();
- expect( props[ 'data-isLoading' ] ).toBe( false );
- expect( props[ 'data-reviews' ] ).toEqual(
- mockReviews.slice( 0, 2 )
- );
- expect( props[ 'data-totalReviews' ] ).toEqual(
- mockReviews.length
- );
- } );
- } );
-
- describe( 'when the API returns an error', () => {
- const error = { message: 'There was an error.' };
- const getReviewsPromise = Promise.reject( error );
- const formattedError = { message: 'There was an error.', type: 'api' };
-
- beforeEach( () => {
- mockUtils.getReviews.mockImplementation( () => getReviewsPromise );
- mockBaseUtils.formatError.mockImplementation(
- () => formattedError
- );
- renderer = render();
- } );
-
- test( 'sets the error prop', async () => {
- await expect( () => getReviewsPromise() ).toThrow();
-
- const { formatError } = mockBaseUtils;
- const props = renderer.root.findByType( 'div' ).props;
-
- expect( formatError ).toHaveBeenCalledWith( error );
- expect( formatError ).toHaveBeenCalledTimes( 1 );
- expect( props[ 'data-error' ] ).toEqual( formattedError );
- expect( props[ 'data-isLoading' ] ).toBe( false );
- expect( props[ 'data-reviews' ] ).toEqual( [] );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-reviews.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-reviews.js
deleted file mode 100644
index 021117ca..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-reviews.js
+++ /dev/null
@@ -1,219 +0,0 @@
-/**
- * External dependencies
- */
-import { Component } from '@wordpress/element';
-import PropTypes from 'prop-types';
-import isShallowEqual from '@wordpress/is-shallow-equal';
-
-/**
- * Internal dependencies
- */
-import { getReviews } from '../../blocks/reviews/utils';
-import { formatError } from '../utils/errors';
-
-/**
- * HOC that queries reviews for a component.
- *
- * @param {Function} OriginalComponent Component being wrapped.
- */
-const withReviews = ( OriginalComponent ) => {
- class WrappedComponent extends Component {
- static propTypes = {
- order: PropTypes.oneOf( [ 'asc', 'desc' ] ).isRequired,
- orderby: PropTypes.string.isRequired,
- reviewsToDisplay: PropTypes.number.isRequired,
- categoryIds: PropTypes.oneOfType( [
- PropTypes.string,
- PropTypes.array,
- ] ),
- delayFunction: PropTypes.func,
- onReviewsAppended: PropTypes.func,
- onReviewsLoadError: PropTypes.func,
- onReviewsReplaced: PropTypes.func,
- productId: PropTypes.oneOfType( [
- PropTypes.string,
- PropTypes.number,
- ] ),
- };
-
- static defaultProps = {
- delayFunction: ( f ) => f,
- onReviewsAppended: () => {},
- onReviewsLoadError: () => {},
- onReviewsReplaced: () => {},
- };
-
- isPreview = !! this.props.attributes.previewReviews;
-
- delayedAppendReviews = this.props.delayFunction( this.appendReviews );
-
- isMounted = false;
-
- state = {
- error: null,
- loading: true,
- reviews: this.isPreview ? this.props.attributes.previewReviews : [],
- totalReviews: this.isPreview
- ? this.props.attributes.previewReviews.length
- : 0,
- };
-
- componentDidMount() {
- this.isMounted = true;
- this.replaceReviews();
- }
-
- componentDidUpdate( prevProps ) {
- if ( prevProps.reviewsToDisplay < this.props.reviewsToDisplay ) {
- // Since this attribute might be controlled via something with
- // short intervals between value changes, this allows for optionally
- // delaying review fetches via the provided delay function.
- this.delayedAppendReviews();
- } else if ( this.shouldReplaceReviews( prevProps, this.props ) ) {
- this.replaceReviews();
- }
- }
-
- shouldReplaceReviews( prevProps, nextProps ) {
- return (
- prevProps.orderby !== nextProps.orderby ||
- prevProps.order !== nextProps.order ||
- prevProps.productId !== nextProps.productId ||
- ! isShallowEqual( prevProps.categoryIds, nextProps.categoryIds )
- );
- }
-
- componentWillUnmount() {
- this.isMounted = false;
-
- if ( this.delayedAppendReviews.cancel ) {
- this.delayedAppendReviews.cancel();
- }
- }
-
- getArgs( reviewsToSkip ) {
- const { categoryIds, order, orderby, productId, reviewsToDisplay } =
- this.props;
- const args = {
- order,
- orderby,
- per_page: reviewsToDisplay - reviewsToSkip,
- offset: reviewsToSkip,
- };
-
- if ( categoryIds ) {
- const categories = Array.isArray( categoryIds )
- ? categoryIds
- : JSON.parse( categoryIds );
-
- args.category_id = Array.isArray( categories )
- ? categories.join( ',' )
- : categories;
- }
-
- if ( productId ) {
- args.product_id = productId;
- }
-
- return args;
- }
-
- replaceReviews() {
- if ( this.isPreview ) {
- return;
- }
-
- const { onReviewsReplaced } = this.props;
- this.updateListOfReviews().then( onReviewsReplaced );
- }
-
- appendReviews() {
- if ( this.isPreview ) {
- return;
- }
-
- const { onReviewsAppended, reviewsToDisplay } = this.props;
- const { reviews } = this.state;
-
- // Given that this function is delayed, props might have been updated since
- // it was called so we need to check again if fetching new reviews is necessary.
- if ( reviewsToDisplay <= reviews.length ) {
- return;
- }
-
- this.updateListOfReviews( reviews ).then( onReviewsAppended );
- }
-
- updateListOfReviews( oldReviews = [] ) {
- const { reviewsToDisplay } = this.props;
- const { totalReviews } = this.state;
- const reviewsToLoad =
- Math.min( totalReviews, reviewsToDisplay ) - oldReviews.length;
-
- this.setState( {
- loading: true,
- reviews: oldReviews.concat( Array( reviewsToLoad ).fill( {} ) ),
- } );
-
- return getReviews( this.getArgs( oldReviews.length ) )
- .then(
- ( {
- reviews: newReviews,
- totalReviews: newTotalReviews,
- } ) => {
- if ( this.isMounted ) {
- this.setState( {
- reviews: oldReviews
- .filter(
- ( review ) =>
- Object.keys( review ).length
- )
- .concat( newReviews ),
- totalReviews: newTotalReviews,
- loading: false,
- error: null,
- } );
- }
-
- return { newReviews };
- }
- )
- .catch( this.setError );
- }
-
- setError = async ( e ) => {
- if ( ! this.isMounted ) {
- return;
- }
- const { onReviewsLoadError } = this.props;
- const error = await formatError( e );
-
- this.setState( { reviews: [], loading: false, error } );
-
- onReviewsLoadError( error );
- };
-
- render() {
- const { reviewsToDisplay } = this.props;
- const { error, loading, reviews, totalReviews } = this.state;
-
- return (
-
- );
- }
- }
-
- const { displayName = OriginalComponent.name || 'Component' } =
- OriginalComponent;
- WrappedComponent.displayName = `WithReviews( ${ displayName } )`;
-
- return WrappedComponent;
-};
-
-export default withReviews;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/index.tsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/index.tsx
deleted file mode 100644
index b5627a53..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/index.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * External dependencies
- */
-import { useRef } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import './style.scss';
-
-interface ScrollToTopProps {
- focusableSelector?: string;
-}
-
-const maybeScrollToTop = ( scrollPoint: HTMLElement ): void => {
- if ( ! scrollPoint ) {
- return;
- }
-
- const yPos = scrollPoint.getBoundingClientRect().bottom;
- const isScrollPointVisible = yPos >= 0 && yPos <= window.innerHeight;
-
- if ( ! isScrollPointVisible ) {
- scrollPoint.scrollIntoView();
- }
-};
-
-const moveFocusToElement = (
- scrollPoint: HTMLElement,
- focusableSelector: string
-): void => {
- const focusableElements =
- scrollPoint.parentElement?.querySelectorAll( focusableSelector ) || [];
-
- if ( focusableElements.length ) {
- const targetElement = focusableElements[ 0 ] as HTMLElement;
- maybeScrollToTop( targetElement );
- targetElement?.focus();
- } else {
- maybeScrollToTop( scrollPoint );
- }
-};
-
-const scrollToHTMLElement = (
- scrollPoint: HTMLElement,
- options: ScrollToTopProps
-): void => {
- const { focusableSelector } = options || {};
-
- if ( ! window || ! Number.isFinite( window.innerHeight ) ) {
- return;
- }
-
- if ( focusableSelector ) {
- moveFocusToElement( scrollPoint, focusableSelector );
- } else {
- maybeScrollToTop( scrollPoint );
- }
-};
-
-/**
- * HOC that provides a function to scroll to the top of the component.
- */
-const withScrollToTop = (
- OriginalComponent: React.FunctionComponent< Record< string, unknown > >
-) => {
- return ( props: Record< string, unknown > ): JSX.Element => {
- const scrollPointRef = useRef< HTMLDivElement >( null );
- const scrollToTop = ( args: ScrollToTopProps ) => {
- if ( scrollPointRef.current !== null ) {
- scrollToHTMLElement( scrollPointRef.current, args );
- }
- };
- return (
- <>
-
-
- >
- );
- };
-};
-
-export default withScrollToTop;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/style.scss b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/style.scss
deleted file mode 100644
index 0d22e72e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/style.scss
+++ /dev/null
@@ -1,4 +0,0 @@
-.with-scroll-to-top__scroll-point {
- position: relative;
- top: -$gap-larger;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/test/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/test/index.js
deleted file mode 100644
index 6687d83e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hocs/with-scroll-to-top/test/index.js
+++ /dev/null
@@ -1,96 +0,0 @@
-// We need to disable the following eslint check as it's only applicable
-// to testing-library/react not `react-test-renderer` used here
-/* eslint-disable testing-library/await-async-query */
-/**
- * External dependencies
- */
-import TestRenderer from 'react-test-renderer';
-
-/**
- * Internal dependencies
- */
-import withScrollToTop from '../index';
-
-const TestComponent = withScrollToTop( ( props ) => (
-
-
-
-) );
-
-const focusedMock = jest.fn();
-const scrollIntoViewMock = jest.fn();
-
-const mockedButton = {
- focus: focusedMock,
- scrollIntoView: scrollIntoViewMock,
-};
-const render = ( { inView } ) => {
- const getBoundingClientRect = () => ( {
- bottom: inView ? 0 : -10,
- } );
- return TestRenderer.create( , {
- createNodeMock: ( element ) => {
- if ( element.type === 'button' ) {
- return {
- ...mockedButton,
- getBoundingClientRect,
- };
- }
- if ( element.type === 'div' ) {
- return {
- getBoundingClientRect,
- parentElement: {
- querySelectorAll: () => [
- { ...mockedButton, getBoundingClientRect },
- ],
- },
- scrollIntoView: scrollIntoViewMock,
- };
- }
- return null;
- },
- } );
-};
-
-describe( 'withScrollToTop Component', () => {
- afterEach( () => {
- focusedMock.mockReset();
- scrollIntoViewMock.mockReset();
- } );
-
- describe( 'if component is not in view', () => {
- beforeEach( () => {
- const renderer = render( { inView: false } );
- const props = renderer.root.findByType( 'span' ).props;
- props.scrollToTop( {
- focusableSelector: 'button',
- } );
- } );
-
- it( 'scrolls to top of the component when scrollToTop is called', () => {
- expect( scrollIntoViewMock ).toHaveBeenCalledTimes( 1 );
- } );
-
- it( 'moves focus to top of the component when scrollToTop is called', () => {
- expect( focusedMock ).toHaveBeenCalledTimes( 1 );
- } );
- } );
-
- describe( 'if component is in view', () => {
- beforeEach( () => {
- const renderer = render( { inView: true } );
- const props = renderer.root.findByType( 'span' ).props;
- props.scrollToTop( {
- focusableSelector: 'button',
- } );
- } );
-
- it( "doesn't scroll to top of the component when scrollToTop is called", () => {
- expect( scrollIntoViewMock ).toHaveBeenCalledTimes( 0 );
- } );
-
- it( 'moves focus to top of the component when scrollToTop is called', () => {
- expect( focusedMock ).toHaveBeenCalledTimes( 1 );
- } );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/index.js
deleted file mode 100644
index 89e29647..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-export * from './use-container-queries';
-export * from './use-local-storage-state';
-export * from './use-position-relative-to-viewport';
-export * from './use-previous';
-export * from './use-shallow-equal';
-export * from './use-throw-error';
-export * from './use-typography-props';
-export * from './use-is-mounted';
-export * from './use-spoken-message';
-export * from './use-style-props';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-position-relative-to-viewport.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-position-relative-to-viewport.js
deleted file mode 100644
index 1b025555..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-position-relative-to-viewport.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
- * External dependencies
- */
-import { render, screen, act } from '@testing-library/react';
-
-/**
- * Internal dependencies
- */
-import { usePositionRelativeToViewport } from '../use-position-relative-to-viewport';
-
-describe( 'usePositionRelativeToViewport', () => {
- function setup() {
- const TestComponent = () => {
- const [ referenceElement, positionRelativeToViewport ] =
- usePositionRelativeToViewport();
-
- return (
- <>
- { referenceElement }
- { positionRelativeToViewport === 'below' && (
-
- ) }
- { positionRelativeToViewport === 'visible' && (
-
- ) }
- { positionRelativeToViewport === 'above' && (
-
- ) }
- >
- );
- };
-
- return render( );
- }
-
- it( "calls IntersectionObserver's `observe` and `unobserve` events", async () => {
- const observe = jest.fn();
- const unobserve = jest.fn();
-
- // @ts-ignore
- IntersectionObserver = jest.fn( () => ( {
- observe,
- unobserve,
- } ) );
-
- const { unmount } = setup();
-
- expect( observe ).toHaveBeenCalled();
- unmount();
- expect( unobserve ).toHaveBeenCalled();
- } );
-
- it.each`
- position | isIntersecting | top
- ${ 'visible' } | ${ true } | ${ 0 }
- ${ 'below' } | ${ false } | ${ 10 }
- ${ 'above' } | ${ false } | ${ 0 }
- ${ 'above' } | ${ false } | ${ -10 }
- `(
- "position relative to viewport is '$position' with isIntersecting=$isIntersecting and top=$top",
- ( { position, isIntersecting, top } ) => {
- let intersectionObserverCallback = ( entries ) => entries;
-
- // @ts-ignore
- IntersectionObserver = jest.fn( ( callback ) => {
- // @ts-ignore
- intersectionObserverCallback = callback;
-
- return {
- observe: () => void null,
- unobserve: () => void null,
- };
- } );
-
- setup();
-
- act( () => {
- intersectionObserverCallback( [
- { isIntersecting, boundingClientRect: { top } },
- ] );
- } );
-
- expect( screen.getAllByTestId( position ) ).toHaveLength( 1 );
- }
- );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-previous.jsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-previous.jsx
deleted file mode 100644
index c1db5f40..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-previous.jsx
+++ /dev/null
@@ -1,98 +0,0 @@
-// We need to disable the following eslint check as it's only applicable
-// to testing-library/react not `react-test-renderer` used here
-/* eslint-disable testing-library/await-async-query */
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-
-/**
- * Internal dependencies
- */
-import { usePrevious } from '../use-previous';
-
-describe( 'usePrevious', () => {
- const TestComponent = ( { testValue, validation } ) => {
- const previousValue = usePrevious( testValue, validation );
- return (
-
- );
- };
-
- let renderer;
- beforeEach( () => ( renderer = null ) );
-
- it( 'should be undefined at first pass', () => {
- act( () => {
- renderer = TestRenderer.create( );
- } );
- const testValue =
- renderer.root.findByType( 'div' ).props[ 'data-testValue' ];
- const testPreviousValue =
- renderer.root.findByType( 'div' ).props[ 'data-previousValue' ];
-
- expect( testValue ).toBe( 1 );
- expect( testPreviousValue ).toBe( undefined );
- } );
-
- it( 'test new and previous value', () => {
- let testValue;
- let testPreviousValue;
- act( () => {
- renderer = TestRenderer.create( );
- } );
-
- act( () => {
- renderer.update( );
- } );
- testValue = renderer.root.findByType( 'div' ).props[ 'data-testValue' ];
- testPreviousValue =
- renderer.root.findByType( 'div' ).props[ 'data-previousValue' ];
- expect( testValue ).toBe( 2 );
- expect( testPreviousValue ).toBe( 1 );
-
- act( () => {
- renderer.update( );
- } );
- testValue = renderer.root.findByType( 'div' ).props[ 'data-testValue' ];
- testPreviousValue =
- renderer.root.findByType( 'div' ).props[ 'data-previousValue' ];
- expect( testValue ).toBe( 3 );
- expect( testPreviousValue ).toBe( 2 );
- } );
-
- it( 'should not update value if validation fails', () => {
- let testValue;
- let testPreviousValue;
- act( () => {
- renderer = TestRenderer.create(
-
- );
- } );
-
- act( () => {
- renderer.update(
-
- );
- } );
- testValue = renderer.root.findByType( 'div' ).props[ 'data-testValue' ];
- testPreviousValue =
- renderer.root.findByType( 'div' ).props[ 'data-previousValue' ];
- expect( testValue ).toBe( 'abc' );
- expect( testPreviousValue ).toBe( 1 );
-
- act( () => {
- renderer.update(
-
- );
- } );
- testValue = renderer.root.findByType( 'div' ).props[ 'data-testValue' ];
- testPreviousValue =
- renderer.root.findByType( 'div' ).props[ 'data-previousValue' ];
- expect( testValue ).toBe( 3 );
- expect( testPreviousValue ).toBe( 1 );
- } );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-shallow-equal.jsx b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-shallow-equal.jsx
deleted file mode 100644
index 687b6b1c..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/test/use-shallow-equal.jsx
+++ /dev/null
@@ -1,79 +0,0 @@
-// We need to disable the following eslint check as it's only applicable
-// to testing-library/react not `react-test-renderer` used here
-/* eslint-disable testing-library/await-async-query */
-/**
- * External dependencies
- */
-import TestRenderer, { act } from 'react-test-renderer';
-
-/**
- * Internal dependencies
- */
-import { useShallowEqual } from '../use-shallow-equal';
-
-describe( 'useShallowEqual', () => {
- const TestComponent = ( { testValue } ) => {
- const newValue = useShallowEqual( testValue );
- return
;
- };
- let renderer;
- beforeEach( () => ( renderer = null ) );
- it.each`
- testValueA | aType | testValueB | bType
- ${ { a: 'b', foo: 'bar' } } | ${ 'object' } | ${ { foo: 'bar', a: 'b' } } | ${ 'object' }
- ${ [ 'b', 'bar' ] } | ${ 'array' } | ${ [ 'b', 'bar' ] } | ${ 'array' }
- ${ 1 } | ${ 'number' } | ${ 1 } | ${ 'number' }
- ${ '1' } | ${ 'string' } | ${ '1' } | ${ 'string' }
- ${ true } | ${ 'bool' } | ${ true } | ${ 'bool' }
- `(
- '$testValueA ($aType) and $testValueB ($bType) are expected to be equal',
- ( { testValueA, testValueB } ) => {
- let testPropValue;
- act( () => {
- renderer = TestRenderer.create(
-
- );
- } );
- testPropValue =
- renderer.root.findByType( 'div' ).props[ 'data-newValue' ];
- expect( testPropValue ).toBe( testValueA );
- // do update
- act( () => {
- renderer.update( );
- } );
- testPropValue =
- renderer.root.findByType( 'div' ).props[ 'data-newValue' ];
- expect( testPropValue ).toBe( testValueA );
- }
- );
-
- it.each`
- testValueA | aType | testValueB | bType
- ${ { a: 'b', foo: 'bar' } } | ${ 'object' } | ${ { foo: 'bar', a: 'c' } } | ${ 'object' }
- ${ [ 'b', 'bar' ] } | ${ 'array' } | ${ [ 'bar', 'b' ] } | ${ 'array' }
- ${ 1 } | ${ 'number' } | ${ '1' } | ${ 'string' }
- ${ 1 } | ${ 'number' } | ${ 2 } | ${ 'number' }
- ${ 1 } | ${ 'number' } | ${ true } | ${ 'bool' }
- ${ 0 } | ${ 'number' } | ${ false } | ${ 'bool' }
- `(
- '$testValueA ($aType) and $testValueB ($bType) are expected to not be equal',
- ( { testValueA, testValueB } ) => {
- let testPropValue;
- act( () => {
- renderer = TestRenderer.create(
-
- );
- } );
- testPropValue =
- renderer.root.findByType( 'div' ).props[ 'data-newValue' ];
- expect( testPropValue ).toBe( testValueA );
- // do update
- act( () => {
- renderer.update( );
- } );
- testPropValue =
- renderer.root.findByType( 'div' ).props[ 'data-newValue' ];
- expect( testPropValue ).toBe( testValueB );
- }
- );
-} );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-container-queries.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-container-queries.ts
deleted file mode 100644
index f9e95374..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-container-queries.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * External dependencies
- */
-import { useResizeObserver } from '@wordpress/compose';
-
-/**
- * Returns a resizeListener element and a class name based on its width.
- * Class names are based on the smaller of the breakpoints:
- * https://github.com/WordPress/gutenberg/tree/master/packages/viewport#usage
- * Values are also based on those breakpoints minus ~80px which is approximately
- * the left + right margin in Storefront with a font-size of 16px.
- * _Note: `useContainerQueries` will return an empty class name `` until after
- * first render_
- *
- * @return {Array} An array of {Element} `resizeListener` and {string} `className`.
- *
- * @example
- *
- * ```js
- * const App = () => {
- * const [ resizeListener, containerClassName ] = useContainerQueries();
- *
- * return (
- *
- * { resizeListener }
- * Your content here
- *
- * );
- * };
- * ```
- */
-export const useContainerQueries = (): [ React.ReactElement, string ] => {
- const [ resizeListener, { width } ] = useResizeObserver();
-
- let className = '';
- if ( width > 700 ) {
- className = 'is-large';
- } else if ( width > 520 ) {
- className = 'is-medium';
- } else if ( width > 400 ) {
- className = 'is-small';
- } else if ( width ) {
- className = 'is-mobile';
- }
-
- return [ resizeListener, className ];
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-is-mounted.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-is-mounted.ts
deleted file mode 100644
index 2ebccd86..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-is-mounted.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * External dependencies
- */
-import { useCallback, useEffect, useRef } from '@wordpress/element';
-
-/**
- * Returns a boolean value based on whether the current component has been mounted.
- *
- * @return {boolean} If the component has been mounted.
- *
- * @example
- *
- * ```js
- * const App = () => {
- * const isMounted = useIsMounted();
- *
- * if ( ! isMounted() ) {
- * return null;
- * }
- *
- * return ;
- * };
- * ```
- */
-
-export function useIsMounted() {
- const isMounted = useRef( false );
-
- useEffect( () => {
- isMounted.current = true;
-
- return () => {
- isMounted.current = false;
- };
- }, [] );
-
- return useCallback( () => isMounted.current, [] );
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-local-storage-state.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-local-storage-state.ts
deleted file mode 100644
index 019b621f..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-local-storage-state.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * External dependencies
- */
-import { useEffect, useState } from '@wordpress/element';
-import type { Dispatch, SetStateAction } from 'react';
-
-export const useLocalStorageState = < T >(
- key: string,
- initialValue: T
-): [ T, Dispatch< SetStateAction< T > > ] => {
- const [ state, setState ] = useState< T >( () => {
- const valueInLocalStorage = window.localStorage.getItem( key );
- if ( valueInLocalStorage ) {
- try {
- return JSON.parse( valueInLocalStorage );
- } catch {
- // eslint-disable-next-line no-console
- console.error(
- `Value for key '${ key }' could not be retrieved from localStorage because it can't be parsed.`
- );
- }
- }
- return initialValue;
- } );
- useEffect( () => {
- try {
- window.localStorage.setItem( key, JSON.stringify( state ) );
- } catch {
- // eslint-disable-next-line no-console
- console.error(
- `Value for key '${ key }' could not be saved in localStorage because it can't be converted into a string.`
- );
- }
- }, [ key, state ] );
-
- return [ state, setState ];
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-position-relative-to-viewport.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-position-relative-to-viewport.js
deleted file mode 100644
index 8072bb1e..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-position-relative-to-viewport.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * External dependencies
- */
-import { useRef, useLayoutEffect, useState } from '@wordpress/element';
-
-/** @typedef {import('react')} React */
-
-/** @type {React.CSSProperties} */
-const style = {
- bottom: 0,
- left: 0,
- opacity: 0,
- pointerEvents: 'none',
- position: 'absolute',
- right: 0,
- top: 0,
- zIndex: -1,
-};
-
-/**
- * Returns an element and a string (`above`, `visible` or `below`) based on the
- * element position relative to the viewport.
- * _Note: `usePositionRelativeToViewport` will return an empty position (``)
- * until after first render_
- *
- * @return {Array} An array of {Element} `referenceElement` and {string} `positionRelativeToViewport`.
- *
- * @example
- *
- * ```js
- * const App = () => {
- * const [ referenceElement, positionRelativeToViewport ] = useContainerQueries();
- *
- * return (
- * <>
- * { referenceElement }
- * { positionRelativeToViewport === 'below' && Reference element is below the viewport.
}
- * { positionRelativeToViewport === 'visible' && Reference element is visible in the viewport.
}
- * { positionRelativeToViewport === 'above' && Reference element is above the viewport.
}
- * >
- * );
- * };
- * ```
- */
-export const usePositionRelativeToViewport = () => {
- const [ positionRelativeToViewport, setPositionRelativeToViewport ] =
- useState( '' );
- const referenceElementRef = useRef( null );
- const intersectionObserver = useRef(
- new IntersectionObserver(
- ( entries ) => {
- if ( entries[ 0 ].isIntersecting ) {
- setPositionRelativeToViewport( 'visible' );
- } else {
- setPositionRelativeToViewport(
- entries[ 0 ].boundingClientRect.top > 0
- ? 'below'
- : 'above'
- );
- }
- },
- { threshold: 1.0 }
- )
- );
-
- useLayoutEffect( () => {
- const referenceElementNode = referenceElementRef.current;
- const observer = intersectionObserver.current;
-
- if ( referenceElementNode ) {
- observer.observe( referenceElementNode );
- }
-
- return () => {
- observer.unobserve( referenceElementNode );
- };
- }, [] );
-
- const referenceElement = (
-
- );
-
- return [ referenceElement, positionRelativeToViewport ];
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-previous.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-previous.ts
deleted file mode 100644
index 55c2b581..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-previous.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * External dependencies
- */
-import { useRef, useEffect } from '@wordpress/element';
-
-interface Validation< T > {
- ( value: T, previousValue: T | undefined ): boolean;
-}
-/**
- * Use Previous based on https://usehooks.com/useprevious/.
- *
- * @param {*} value
- * @param {Function} [validation] Function that needs to validate for the value
- * to be updated.
- */
-export function usePrevious< T >(
- value: T,
- validation?: Validation< T >
-): T | undefined {
- const ref = useRef< T >();
-
- useEffect( () => {
- if (
- ref.current !== value &&
- ( ! validation || validation( value, ref.current ) )
- ) {
- ref.current = value;
- }
- }, [ value, validation ] );
-
- return ref.current;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-shallow-equal.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-shallow-equal.ts
deleted file mode 100644
index a2536f18..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-shallow-equal.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * External dependencies
- */
-import { useRef } from '@wordpress/element';
-import isShallowEqual from '@wordpress/is-shallow-equal';
-
-/**
- * A custom hook that compares the provided value across renders and returns the
- * previous instance if shallow equality with previous instance exists.
- *
- * This is particularly useful when non-primitive types are used as
- * dependencies for react hooks.
- *
- * @param {*} value Value to keep the same if satisfies shallow equality.
- *
- * @return {*} The previous cached instance of the value if the current has shallow equality with it.
- */
-export function useShallowEqual< T >( value: T ): T {
- const ref = useRef< T >( value );
- if ( ! isShallowEqual( value, ref.current ) ) {
- ref.current = value;
- }
- return ref.current;
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-spoken-message.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-spoken-message.ts
deleted file mode 100644
index a7f5f4aa..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-spoken-message.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * External dependencies
- */
-import { useEffect, renderToString } from '@wordpress/element';
-import { speak } from '@wordpress/a11y';
-
-/**
- * Custom hook which announces the message with the given politeness, if a
- * valid message is provided.
- */
-export const useSpokenMessage = (
- message: string | React.ReactNode | undefined,
- politeness: 'polite' | 'assertive' | undefined
-) => {
- const spokenMessage =
- typeof message === 'string' ? message : renderToString( message );
-
- useEffect( () => {
- if ( spokenMessage ) {
- speak( spokenMessage, politeness );
- }
- }, [ spokenMessage, politeness ] );
-};
-
-export default useSpokenMessage;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-style-props.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-style-props.ts
deleted file mode 100644
index 363887b0..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-style-props.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { isString, isObject } from '@woocommerce/types';
-import type { Style as StyleEngineProperties } from '@wordpress/style-engine/src/types';
-import type { CSSProperties } from 'react';
-
-/**
- * Internal dependencies
- */
-import { useTypographyProps } from './use-typography-props';
-import {
- getColorClassesAndStyles,
- getBorderClassesAndStyles,
- getSpacingClassesAndStyles,
-} from '../utils';
-
-export type StyleProps = {
- className: string;
- style: CSSProperties;
-};
-
-type BlockAttributes = Record< string, unknown > & {
- style?: StyleEngineProperties | string | undefined;
-};
-
-type StyleAttributes = Record< string, unknown > & {
- style: StyleEngineProperties;
-};
-
-/**
- * Parses incoming props.
- *
- * This may include style properties at the top level, or may include a nested `style` object. This ensures the expected
- * values are present and converts any string based values to objects as required.
- */
-const parseStyleAttributes = ( rawProps: BlockAttributes ): StyleAttributes => {
- const props = isObject( rawProps )
- ? rawProps
- : {
- style: {},
- };
-
- let style = props.style;
-
- if ( isString( style ) ) {
- style = JSON.parse( style ) || {};
- }
-
- if ( ! isObject( style ) ) {
- style = {};
- }
-
- return {
- ...props,
- style,
- };
-};
-
-/**
- * Returns the CSS class names and inline styles for a block when provided with its props/attributes.
- *
- * This hook (and its utilities) borrow functionality from the Gutenberg Block Editor package--something we don't want
- * to import on the frontend.
- */
-export const useStyleProps = ( props: BlockAttributes ): StyleProps => {
- const styleAttributes = parseStyleAttributes( props );
- const colorProps = getColorClassesAndStyles( styleAttributes );
- const borderProps = getBorderClassesAndStyles( styleAttributes );
- const spacingProps = getSpacingClassesAndStyles( styleAttributes );
- const typographyProps = useTypographyProps( styleAttributes );
-
- return {
- className: classnames(
- typographyProps.className,
- colorProps.className,
- borderProps.className,
- spacingProps.className
- ),
- style: {
- ...typographyProps.style,
- ...colorProps.style,
- ...borderProps.style,
- ...spacingProps.style,
- },
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-throw-error.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-throw-error.ts
deleted file mode 100644
index 85334dac..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-throw-error.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * External dependencies
- */
-import { useState, useCallback } from '@wordpress/element';
-
-/**
- * Helper method for throwing an error in a React Hook.
- *
- * @see https://github.com/facebook/react/issues/14981
- */
-export const useThrowError = (): ( ( error: Error ) => void ) => {
- const [ , setState ] = useState();
- return useCallback( ( error: Error ): void => {
- setState( () => {
- throw error;
- } );
- }, [] );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-typography-props.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-typography-props.ts
deleted file mode 100644
index 0557f9a3..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/hooks/use-typography-props.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * External dependencies
- */
-import { isObject, isString } from '@woocommerce/types';
-import type { Style as StyleEngineProperties } from '@wordpress/style-engine/src/types';
-
-/**
- * Internal dependencies
- */
-import type { StyleProps } from './use-style-props';
-
-type blockAttributes = {
- style: StyleEngineProperties;
- // String identifier for the font size preset--not an absolute value.
- fontSize?: string | undefined;
- // String identifier for the font family preset, not the actual font family.
- fontFamily?: string | undefined;
-};
-
-export const useTypographyProps = ( props: blockAttributes ): StyleProps => {
- const typography = isObject( props.style.typography )
- ? props.style.typography
- : {};
- const classNameFallback = isString( typography.fontFamily )
- ? typography.fontFamily
- : '';
- const className = props.fontFamily
- ? `has-${ props.fontFamily }-font-family`
- : classNameFallback;
-
- return {
- className,
- style: {
- fontSize: props.fontSize
- ? `var(--wp--preset--font-size--${ props.fontSize })`
- : typography.fontSize,
- fontStyle: typography.fontStyle,
- fontWeight: typography.fontWeight,
- letterSpacing: typography.letterSpacing,
- lineHeight: typography.lineHeight,
- textDecoration: typography.textDecoration,
- textTransform: typography.textTransform,
- },
- };
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/address.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/address.ts
deleted file mode 100644
index e786f78b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/address.ts
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * External dependencies
- */
-import prepareAddressFields from '@woocommerce/base-components/cart-checkout/address-form/prepare-address-fields';
-import { isEmail } from '@wordpress/url';
-import type {
- CartResponseBillingAddress,
- CartResponseShippingAddress,
-} from '@woocommerce/types';
-import {
- defaultAddressFields,
- ShippingAddress,
- BillingAddress,
-} from '@woocommerce/settings';
-import { decodeEntities } from '@wordpress/html-entities';
-import {
- SHIPPING_COUNTRIES,
- SHIPPING_STATES,
-} from '@woocommerce/block-settings';
-
-/**
- * Compare two addresses and see if they are the same.
- */
-export const isSameAddress = < T extends ShippingAddress | BillingAddress >(
- address1: T,
- address2: T
-): boolean => {
- return Object.keys( defaultAddressFields ).every(
- ( field: string ) =>
- address1[ field as keyof T ] === address2[ field as keyof T ]
- );
-};
-
-/**
- * pluckAddress takes a full address object and returns relevant fields for calculating
- * shipping, so we can track when one of them change to update rates.
- *
- * @param {Object} address An object containing all address information
- * @param {string} address.country The country.
- * @param {string} address.state The state.
- * @param {string} address.city The city.
- * @param {string} address.postcode The postal code.
- *
- * @return {Object} pluckedAddress An object containing shipping address that are needed to fetch an address.
- */
-export const pluckAddress = ( {
- country = '',
- state = '',
- city = '',
- postcode = '',
-}: CartResponseBillingAddress | CartResponseShippingAddress ): {
- country: string;
- state: string;
- city: string;
- postcode: string;
-} => ( {
- country: country.trim(),
- state: state.trim(),
- city: city.trim(),
- postcode: postcode ? postcode.replace( ' ', '' ).toUpperCase() : '',
-} );
-
-/**
- * pluckEmail takes a full address object and returns only the email address, if set and valid. Otherwise returns an empty string.
- *
- * @param {Object} address An object containing all address information
- * @param {string} address.email The email address.
- * @return {string} The email address.
- */
-export const pluckEmail = ( {
- email = '',
-}: CartResponseBillingAddress ): string =>
- isEmail( email ) ? email.trim() : '';
-
-/**
- * Type-guard.
- */
-const isValidAddressKey = (
- key: string,
- address: CartResponseBillingAddress | CartResponseShippingAddress
-): key is keyof typeof address => {
- return key in address;
-};
-
-/**
- * Sets fields to an empty string in an address if they are hidden by the settings in countryLocale.
- *
- * @param {Object} address The address to empty fields from.
- * @return {Object} The address with hidden fields values removed.
- */
-export const emptyHiddenAddressFields = <
- T extends CartResponseBillingAddress | CartResponseShippingAddress
->(
- address: T
-): T => {
- const fields = Object.keys( defaultAddressFields );
- const addressFields = prepareAddressFields( fields, {}, address.country );
- const newAddress = Object.assign( {}, address ) as T;
-
- addressFields.forEach( ( { key = '', hidden = false } ) => {
- if ( hidden && isValidAddressKey( key, address ) ) {
- newAddress[ key ] = '';
- }
- } );
-
- return newAddress;
-};
-
-/*
- * Formats a shipping address for display.
- *
- * @param {Object} address The address to format.
- * @return {string | null} The formatted address or null if no address is provided.
- */
-export const formatShippingAddress = (
- address: ShippingAddress | BillingAddress
-): string | null => {
- // We bail early if we don't have an address.
- if ( Object.values( address ).length === 0 ) {
- return null;
- }
- const formattedCountry =
- typeof SHIPPING_COUNTRIES[ address.country ] === 'string'
- ? decodeEntities( SHIPPING_COUNTRIES[ address.country ] )
- : '';
-
- const formattedState =
- typeof SHIPPING_STATES[ address.country ] === 'object' &&
- typeof SHIPPING_STATES[ address.country ][ address.state ] === 'string'
- ? decodeEntities(
- SHIPPING_STATES[ address.country ][ address.state ]
- )
- : address.state;
-
- const addressParts = [];
-
- addressParts.push( address.postcode.toUpperCase() );
- addressParts.push( address.city );
- addressParts.push( formattedState );
- addressParts.push( formattedCountry );
-
- const formattedLocation = addressParts.filter( Boolean ).join( ', ' );
-
- if ( ! formattedLocation ) {
- return null;
- }
-
- return formattedLocation;
-};
-
-/**
- * Returns true if the address has a city and country.
- */
-export const isAddressComplete = (
- address: ShippingAddress | BillingAddress
-): boolean => {
- return !! address.city && !! address.country;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/camel-case-keys.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/camel-case-keys.ts
deleted file mode 100644
index 0d49edd1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/camel-case-keys.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * External dependencies
- */
-import { camelCase } from 'change-case';
-
-/**
- * Internal dependencies
- */
-import { mapKeys } from './map-keys';
-
-export const camelCaseKeys = ( obj: object ) =>
- mapKeys( obj, ( _, key ) => camelCase( key ) );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/create-notice.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/create-notice.ts
deleted file mode 100644
index 90343f8d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/create-notice.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import type { Options as NoticeOptions } from '@wordpress/notices';
-import { select, dispatch } from '@wordpress/data';
-
-/**
- * Internal dependencies
- */
-import { noticeContexts } from '../context/event-emit/utils';
-
-export const DEFAULT_ERROR_MESSAGE = __(
- 'Something went wrong. Please contact us to get assistance.',
- 'woo-gutenberg-products-block'
-);
-
-/**
- * Returns a list of all notice contexts defined by Blocks.
- *
- * Contexts are defined in enum format, but this returns an array of strings instead.
- */
-export const getNoticeContexts = () => {
- return Object.values( noticeContexts );
-};
-
-/**
- * Wrapper for @wordpress/notices createNotice.
- */
-export const createNotice = (
- status: 'error' | 'warning' | 'info' | 'success',
- message: string,
- options: Partial< NoticeOptions >
-) => {
- const noticeContext = options?.context;
- const suppressNotices =
- select( 'wc/store/payment' ).isExpressPaymentMethodActive();
-
- if ( suppressNotices || noticeContext === undefined ) {
- return;
- }
-
- dispatch( 'core/notices' ).createNotice( status, message, {
- isDismissible: true,
- ...options,
- context: noticeContext,
- } );
-};
-
-/**
- * Remove notices from all contexts.
- *
- * @todo Remove this when supported in Gutenberg.
- * @see https://github.com/WordPress/gutenberg/pull/44059
- */
-export const removeAllNotices = () => {
- const containers = select(
- 'wc/store/store-notices'
- ).getRegisteredContainers();
- const { removeNotice } = dispatch( 'core/notices' );
- const { getNotices } = select( 'core/notices' );
-
- containers.forEach( ( container ) => {
- getNotices( container ).forEach( ( notice ) => {
- removeNotice( notice.id, container );
- } );
- } );
-};
-
-export const removeNoticesWithContext = ( context: string ) => {
- const { removeNotice } = dispatch( 'core/notices' );
- const { getNotices } = select( 'core/notices' );
-
- getNotices( context ).forEach( ( notice ) => {
- removeNotice( notice.id, context );
- } );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/debounce.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/debounce.ts
deleted file mode 100644
index 5cb6f5be..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/debounce.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-export type DebouncedFunction< T extends ( ...args: any[] ) => any > = ( (
- ...args: Parameters< T >
-) => void ) & { flush: () => void };
-
-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-export const debounce = < T extends ( ...args: any[] ) => any >(
- func: T,
- wait: number,
- immediate?: boolean
-): DebouncedFunction< T > => {
- let timeout: ReturnType< typeof setTimeout > | null;
- let latestArgs: Parameters< T > | null = null;
-
- const debounced = ( ( ...args: Parameters< T > ) => {
- latestArgs = args;
- if ( timeout ) clearTimeout( timeout );
- timeout = setTimeout( () => {
- timeout = null;
- if ( ! immediate && latestArgs ) func( ...latestArgs );
- }, wait );
- if ( immediate && ! timeout ) func( ...args );
- } ) as DebouncedFunction< T >;
-
- debounced.flush = () => {
- if ( timeout && latestArgs ) {
- func( ...latestArgs );
- clearTimeout( timeout );
- timeout = null;
- }
- };
-
- return debounced;
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/derive-selected-shipping-rates.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/derive-selected-shipping-rates.ts
deleted file mode 100644
index 2b0118db..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/derive-selected-shipping-rates.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * External dependencies
- */
-import { CartShippingRate } from '@woocommerce/types';
-
-/**
- * Get an array of selected shipping rates keyed by Package ID.
- *
- * @param {Array} shippingRates Array of shipping rates.
- * @return {Object} Object containing the package IDs and selected rates in the format: { [packageId:string]: rateId:string }
- */
-export const deriveSelectedShippingRates = (
- shippingRates: CartShippingRate[]
-): Record< string, string > =>
- Object.fromEntries(
- shippingRates.map(
- ( { package_id: packageId, shipping_rates: packageRates } ) => [
- packageId,
- packageRates.find( ( rate ) => rate.selected )?.rate_id || '',
- ]
- )
- );
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/errors.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/errors.ts
deleted file mode 100644
index 1879f3d4..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/errors.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-export interface ErrorObject {
- /**
- * Human-readable error message to display.
- */
- message: string;
- /**
- * Context in which the error was triggered. That will determine how the error is displayed to the user.
- */
- type: 'api' | 'general' | string;
-}
-
-type SimpleError = {
- message: string;
- type?: string;
-};
-
-export const formatError = async (
- error: SimpleError | Response
-): Promise< ErrorObject > => {
- if ( 'json' in error ) {
- try {
- const parsedError = await error.json();
- return {
- message: parsedError.message,
- type: parsedError.type || 'api',
- };
- } catch ( e ) {
- return {
- // We could only return this if e is instanceof Error but, to avoid changing runtime
- // behaviour, we'll just cast it instead.
- message: ( e as Error ).message,
- type: 'general',
- };
- }
- } else {
- return {
- message: error.message,
- type: error.type || 'general',
- };
- }
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-icons-from-payment-methods.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-icons-from-payment-methods.ts
deleted file mode 100644
index 3e8a8f05..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-icons-from-payment-methods.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * External dependencies
- */
-import type {
- PaymentMethods,
- PaymentMethodIcons as PaymentMethodIconsType,
-} from '@woocommerce/types';
-
-/**
- * Get the provider icons from payment methods data.
- *
- * @param {PaymentMethods} paymentMethods Payment Method data
- * @return {PaymentMethodIconsType} Payment Method icons data.
- */
-export const getIconsFromPaymentMethods = (
- paymentMethods: PaymentMethods
-): PaymentMethodIconsType => {
- return Object.values( paymentMethods ).reduce( ( acc, paymentMethod ) => {
- if ( paymentMethod.icons !== null ) {
- acc = acc.concat( paymentMethod.icons );
- }
- return acc;
- }, [] as PaymentMethodIconsType );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-inline-styles.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-inline-styles.ts
deleted file mode 100644
index 62101ad2..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-inline-styles.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * External dependencies
- */
-import classnames from 'classnames';
-import { paramCase as kebabCase } from 'change-case';
-import { getCSSRules } from '@wordpress/style-engine';
-import { isObject } from '@woocommerce/types';
-import type { Style as StyleEngineProperties } from '@wordpress/style-engine/src/types';
-
-/**
- * Returns the inline styles to add depending on the style object
- *
- * @param {Object} styles Styles configuration.
- * @return {Object} Flattened CSS variables declaration.
- */
-function getInlineStyles( styles = {} ) {
- const output = {} as Record< string, unknown >;
-
- getCSSRules( styles, { selector: '' } ).forEach( ( rule ) => {
- output[ rule.key ] = rule.value;
- } );
-
- return output;
-}
-
-/**
- * Get the classname for a given color.
- */
-function getColorClassName(
- colorContextName: string | undefined,
- colorSlug: string | undefined
-): string {
- if ( ! colorContextName || ! colorSlug ) {
- return '';
- }
- return `has-${ kebabCase( colorSlug ) }-${ colorContextName }`;
-}
-
-/**
- * Generates a CSS class name consisting of all the applicable border color
- * classes given the current block attributes.
- */
-function getBorderClassName( attributes: {
- style?: StyleEngineProperties;
- borderColor?: string;
-} ) {
- const { borderColor, style } = attributes;
- const borderColorClass = borderColor
- ? getColorClassName( 'border-color', borderColor )
- : '';
-
- return classnames( {
- 'has-border-color': !! borderColor || !! style?.border?.color,
- [ borderColorClass ]: !! borderColorClass,
- } );
-}
-
-function getGradientClassName( gradientSlug: string | undefined ) {
- if ( ! gradientSlug ) {
- return undefined;
- }
- return `has-${ gradientSlug }-gradient-background`;
-}
-
-/**
- * Provides the CSS class names and inline styles for a block's color support
- * attributes.
- */
-export function getColorClassesAndStyles( props: {
- style?: StyleEngineProperties;
- backgroundColor?: string | undefined;
- textColor?: string | undefined;
- gradient?: string | undefined;
-} ) {
- const { backgroundColor, textColor, gradient, style } = props;
-
- // Collect color CSS classes.
- const backgroundClass = getColorClassName(
- 'background-color',
- backgroundColor
- );
- const textClass = getColorClassName( 'color', textColor );
-
- const gradientClass = getGradientClassName( gradient );
- const hasGradient = gradientClass || style?.color?.gradient;
-
- // Determine color CSS class name list.
- const className = classnames( textClass, gradientClass, {
- // Don't apply the background class if there's a gradient.
- [ backgroundClass ]: ! hasGradient && !! backgroundClass,
- 'has-text-color': textColor || style?.color?.text,
- 'has-background':
- backgroundColor ||
- style?.color?.background ||
- gradient ||
- style?.color?.gradient,
- 'has-link-color': isObject( style?.elements?.link )
- ? style?.elements?.link?.color
- : undefined,
- } );
-
- // Collect inline styles for colors.
- const colorStyles = style?.color || {};
-
- return {
- className,
- style: getInlineStyles( { color: colorStyles } ),
- };
-}
-
-/**
- * Provides the CSS class names and inline styles for a block's border support
- * attributes.
- */
-export function getBorderClassesAndStyles( props: {
- style?: StyleEngineProperties;
- borderColor?: string;
-} ) {
- const border = props.style?.border || {};
- const className = getBorderClassName( props );
-
- return {
- className,
- style: getInlineStyles( { border } ),
- };
-}
-
-/**
- * Provides the CSS class names and inline styles for a block's spacing support
- * attributes.
- */
-export function getSpacingClassesAndStyles( props: {
- style?: StyleEngineProperties;
-} ) {
- const spacingStyles = props.style?.spacing || {};
- const styleProp = getInlineStyles( { spacing: spacingStyles } );
-
- return {
- className: undefined,
- style: styleProp,
- };
-}
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-navigation-type.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-navigation-type.ts
deleted file mode 100644
index 93b02b7d..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-navigation-type.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * Returns the navigation type for the page load.
- */
-export const getNavigationType = () => {
- if (
- window.performance &&
- window.performance.getEntriesByType( 'navigation' ).length
- ) {
- return (
- window.performance.getEntriesByType(
- 'navigation'
- )[ 0 ] as PerformanceNavigationTiming
- ).type;
- }
- return '';
-};
-
-export default getNavigationType;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-valid-block-attributes.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-valid-block-attributes.js
deleted file mode 100644
index d005070b..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/get-valid-block-attributes.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * Given some block attributes, gets attributes from the dataset or uses defaults.
- *
- * @param {Object} blockAttributes Object containing block attributes.
- * @param {Array} rawAttributes Dataset from DOM.
- * @return {Array} Array of parsed attributes.
- */
-export const getValidBlockAttributes = ( blockAttributes, rawAttributes ) => {
- const attributes = [];
-
- Object.keys( blockAttributes ).forEach( ( key ) => {
- if ( typeof rawAttributes[ key ] !== 'undefined' ) {
- switch ( blockAttributes[ key ].type ) {
- case 'boolean':
- attributes[ key ] =
- rawAttributes[ key ] !== 'false' &&
- rawAttributes[ key ] !== false;
- break;
- case 'number':
- attributes[ key ] = parseInt( rawAttributes[ key ], 10 );
- break;
- case 'array':
- case 'object':
- attributes[ key ] = JSON.parse( rawAttributes[ key ] );
- break;
- default:
- attributes[ key ] = rawAttributes[ key ];
- break;
- }
- } else {
- attributes[ key ] = blockAttributes[ key ].default;
- }
- } );
-
- return attributes;
-};
-
-export default getValidBlockAttributes;
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/index.js b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/index.js
deleted file mode 100644
index a59f6a41..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/index.js
+++ /dev/null
@@ -1,18 +0,0 @@
-export * from './errors';
-export * from './address';
-export * from './shipping-rates';
-export * from './legacy-events';
-export * from './render-frontend';
-export * from './get-valid-block-attributes';
-export * from './product-data';
-export * from './derive-selected-shipping-rates';
-export * from './get-icons-from-payment-methods';
-export * from './create-notice';
-export * from './get-navigation-type';
-export * from './map-keys';
-export * from './camel-case-keys';
-export * from './snake-case-keys';
-export * from './debounce';
-export * from './keyby';
-export * from './pick';
-export * from './get-inline-styles';
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/keyby.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/keyby.ts
deleted file mode 100644
index 496635e1..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/keyby.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export const keyBy = < T >( array: T[], key: keyof T ) => {
- return array.reduce( ( acc, value ) => {
- const computedKey = key ? String( value[ key ] ) : String( value );
- acc[ computedKey ] = value;
- return acc;
- }, {} as Record< string, T > );
-};
diff --git a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/lazy-load-script.ts b/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/lazy-load-script.ts
deleted file mode 100644
index 2a282dbe..00000000
--- a/wp/wp-content/plugins/woocommerce/packages/woocommerce-blocks/assets/js/base/utils/lazy-load-script.ts
+++ /dev/null
@@ -1,160 +0,0 @@
-/**
- * External dependencies
- */
-import { isString } from '@woocommerce/types';
-
-interface LazyLoadScriptParams {
- handle: string;
- src: string;
- version?: string;
- after?: string;
- before?: string;
- translations?: string;
-}
-
-interface AppendScriptAttributesParam {
- id: string;
- innerHTML?: string;
- onerror?: OnErrorEventHandlerNonNull;
- onload?: () => void;
- src?: string;
-}
-
-declare global {
- interface Window {
- wc: {
- wcBlocksRegistry: Record< string, unknown >;
- };
- }
-}
-
-/**
- * In WP, registered scripts are loaded into the page with an element like this:
- * ``
- * This function checks whether an element matching that selector exists.
- * Useful to know if a script has already been appended to the page.
- */
-const isScriptTagInDOM = ( scriptId: string, src = '' ): boolean => {
- // If the store is using a plugin to concatenate scripts, we might have some
- // cases where we don't detect whether a script has already been loaded.
- // Because of that, we add an extra protection to the wc-blocks-registry-js
- // script, to avoid ending up with two registries.
- if ( scriptId === 'wc-blocks-registry-js' ) {
- if ( typeof window?.wc?.wcBlocksRegistry === 'object' ) {
- return true;
- }
- }
-
- const srcParts = src.split( '?' );
- if ( srcParts?.length > 1 ) {
- src = srcParts[ 0 ];
- }
- const selector = src
- ? `script#${ scriptId }, script[src*="${ src }"]`
- : `script#${ scriptId }`;
- const scriptElements = document.querySelectorAll( selector );
-
- return scriptElements.length > 0;
-};
-
-/**
- * Appends a script element to the document body if a script with the same id
- * doesn't exist.
- */
-const appendScript = ( attributes: AppendScriptAttributesParam ): void => {
- // Abort if id is not valid or a script with the same id exists.
- if (
- ! isString( attributes.id ) ||
- isScriptTagInDOM( attributes.id, attributes?.src )
- ) {
- return;
- }
- const scriptElement = document.createElement( 'script' );
- for ( const attr in attributes ) {
- // We could technically be iterating over inherited members here, so
- // if this is the case we should skip it.
- if ( ! attributes.hasOwnProperty( attr ) ) {
- continue;
- }
- const key = attr as keyof AppendScriptAttributesParam;
-
- // Skip the keys that aren't strings, because TS can't be sure which
- // key in the scriptElement object we're assigning to.
- if ( key === 'onload' || key === 'onerror' ) {
- continue;
- }
-
- // This assignment stops TS complaining about the value maybe being
- // undefined following the isString check below.
- const value = attributes[ key ];
- if ( isString( value ) ) {
- scriptElement[ key ] = value;
- }
- }
-
- // Now that we've assigned all the strings, we can explicitly assign to the
- // function keys.
- if ( typeof attributes.onload === 'function' ) {
- scriptElement.onload = attributes.onload;
- }
- if ( typeof attributes.onerror === 'function' ) {
- scriptElement.onerror = attributes.onerror;
- }
- document.body.appendChild( scriptElement );
-};
-
-/**
- * Appends a `