From ea0ce0e9155e4af24ac9c262b752635571935cc2 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 27 Aug 2019 16:25:32 +0100 Subject: [PATCH] Fix wcSettings conflicts with wc-admin (https://github.com/woocommerce/woocommerce-blocks/pull/916) * Add inline settings script later than init * Rename to shared-settings for clarity - other extensions filter these * Implement block settings * tweak used hooks * update comment * Shared settings should be dependency * Make Webpack output shared and block settings (https://github.com/woocommerce/woocommerce-blocks/pull/918) --- .../js/base/components/review-list/index.js | 2 +- .../js/blocks/featured-category/block.js | 2 +- .../js/blocks/featured-category/index.js | 2 +- .../js/blocks/featured-product/block.js | 2 +- .../js/blocks/featured-product/index.js | 2 +- .../js/blocks/handpicked-products/block.js | 2 +- .../js/blocks/handpicked-products/index.js | 2 +- .../js/blocks/product-categories/block.js | 2 +- .../product-categories/get-categories.js | 2 +- .../assets/js/blocks/product-search/block.js | 2 +- .../assets/js/blocks/product-tag/block.js | 2 +- .../assets/js/blocks/product-tag/index.js | 2 +- .../js/blocks/products-by-attribute/index.js | 2 +- .../assets/js/blocks/reviews/edit-utils.js | 2 +- .../assets/js/blocks/reviews/editor-block.js | 2 +- .../js/blocks/reviews/frontend-block.js | 2 +- .../assets/js/blocks/reviews/utils.js | 2 +- .../components/grid-layout-control/index.js | 2 +- .../product-attribute-control/index.js | 2 +- .../product-category-control/index.js | 2 +- .../js/components/product-control/index.js | 2 +- .../js/components/product-preview/index.js | 2 +- .../components/product-preview/test/index.js | 2 +- .../components/product-tag-control/index.js | 2 +- .../assets/js/components/utils/index.js | 2 +- .../js/hocs/test/with-searched-products.js | 2 +- .../assets/js/hocs/with-searched-products.js | 2 +- .../js/settings/{ => blocks}/endpoints.js | 0 .../index.js} | 1 + .../assets/js/settings/index.js | 3 -- .../js/settings/{ => shared}/currency.js | 0 .../assets/js/settings/shared/index.js | 2 + .../assets/js/utils/get-query.js | 2 +- .../assets/js/utils/get-shortcode.js | 2 +- .../assets/js/utils/shared-attributes.js | 2 +- plugins/woocommerce-blocks/src/Assets.php | 52 +++++++++++++------ .../tests/js/jest.config.json | 3 +- plugins/woocommerce-blocks/webpack.config.js | 11 ++-- 38 files changed, 77 insertions(+), 55 deletions(-) rename plugins/woocommerce-blocks/assets/js/settings/{ => blocks}/endpoints.js (100%) rename plugins/woocommerce-blocks/assets/js/settings/{product-block-data.js => blocks/index.js} (97%) delete mode 100644 plugins/woocommerce-blocks/assets/js/settings/index.js rename plugins/woocommerce-blocks/assets/js/settings/{ => shared}/currency.js (100%) create mode 100644 plugins/woocommerce-blocks/assets/js/settings/shared/index.js diff --git a/plugins/woocommerce-blocks/assets/js/base/components/review-list/index.js b/plugins/woocommerce-blocks/assets/js/base/components/review-list/index.js index 1cdbc1afe4c..18c810b210b 100644 --- a/plugins/woocommerce-blocks/assets/js/base/components/review-list/index.js +++ b/plugins/woocommerce-blocks/assets/js/base/components/review-list/index.js @@ -2,7 +2,7 @@ * External dependencies */ import PropTypes from 'prop-types'; -import { ENABLE_REVIEW_RATING, SHOW_AVATARS } from '@woocommerce/settings'; +import { ENABLE_REVIEW_RATING, SHOW_AVATARS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/featured-category/block.js b/plugins/woocommerce-blocks/assets/js/blocks/featured-category/block.js index 6d98d3dabca..f59be396a17 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/featured-category/block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/featured-category/block.js @@ -29,7 +29,7 @@ import classnames from 'classnames'; import { Fragment } from '@wordpress/element'; import { compose } from '@wordpress/compose'; import PropTypes from 'prop-types'; -import { MIN_HEIGHT } from '@woocommerce/settings'; +import { MIN_HEIGHT } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/featured-category/index.js b/plugins/woocommerce-blocks/assets/js/blocks/featured-category/index.js index ee93e4debb0..7f468728927 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/featured-category/index.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/featured-category/index.js @@ -4,7 +4,7 @@ import { __ } from '@wordpress/i18n'; import { InnerBlocks } from '@wordpress/editor'; import { registerBlockType } from '@wordpress/blocks'; -import { DEFAULT_HEIGHT } from '@woocommerce/settings'; +import { DEFAULT_HEIGHT } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/featured-product/block.js b/plugins/woocommerce-blocks/assets/js/blocks/featured-product/block.js index bb1f0dbdb98..deb779f442b 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/featured-product/block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/featured-product/block.js @@ -30,7 +30,7 @@ import { Fragment } from '@wordpress/element'; import { compose } from '@wordpress/compose'; import { isEmpty } from 'lodash'; import PropTypes from 'prop-types'; -import { MIN_HEIGHT } from '@woocommerce/settings'; +import { MIN_HEIGHT } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/featured-product/index.js b/plugins/woocommerce-blocks/assets/js/blocks/featured-product/index.js index deaf035c504..be7ecfdce15 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/featured-product/index.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/featured-product/index.js @@ -4,7 +4,7 @@ import { __ } from '@wordpress/i18n'; import { InnerBlocks } from '@wordpress/editor'; import { registerBlockType } from '@wordpress/blocks'; -import { DEFAULT_HEIGHT } from '@woocommerce/settings'; +import { DEFAULT_HEIGHT } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/block.js b/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/block.js index 867a862e7ca..d74eb29ccfb 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/block.js @@ -19,7 +19,7 @@ import { } from '@wordpress/components'; import { Component, Fragment } from '@wordpress/element'; import PropTypes from 'prop-types'; -import { MAX_COLUMNS, MIN_COLUMNS } from '@woocommerce/settings'; +import { MAX_COLUMNS, MIN_COLUMNS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/index.js b/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/index.js index 82e117896e7..b28579271cb 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/index.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/handpicked-products/index.js @@ -3,7 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import { registerBlockType } from '@wordpress/blocks'; -import { DEFAULT_COLUMNS } from '@woocommerce/settings'; +import { DEFAULT_COLUMNS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/product-categories/block.js b/plugins/woocommerce-blocks/assets/js/blocks/product-categories/block.js index eafafdb4802..98b3640a2d8 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/product-categories/block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/product-categories/block.js @@ -4,7 +4,7 @@ import { __ } from '@wordpress/i18n'; import { Component, createRef, Fragment } from 'react'; import classnames from 'classnames'; -import { HOME_URL } from '@woocommerce/settings'; +import { HOME_URL } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/product-categories/get-categories.js b/plugins/woocommerce-blocks/assets/js/blocks/product-categories/get-categories.js index 9f0367de777..587f00ffb17 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/product-categories/get-categories.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/product-categories/get-categories.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { PRODUCT_CATEGORIES } from '@woocommerce/settings'; +import { PRODUCT_CATEGORIES } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/product-search/block.js b/plugins/woocommerce-blocks/assets/js/blocks/product-search/block.js index 12ac6c44566..38ebc6ffe7e 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/product-search/block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/product-search/block.js @@ -7,7 +7,7 @@ import { Component } from '@wordpress/element'; import PropTypes from 'prop-types'; import { withInstanceId, compose } from '@wordpress/compose'; import { PlainText } from '@wordpress/editor'; -import { HOME_URL } from '@woocommerce/settings'; +import { HOME_URL } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/product-tag/block.js b/plugins/woocommerce-blocks/assets/js/blocks/product-tag/block.js index 388a082ea59..c6392830e5b 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/product-tag/block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/product-tag/block.js @@ -17,7 +17,7 @@ import { } from '@wordpress/components'; import { Component, Fragment } from '@wordpress/element'; import PropTypes from 'prop-types'; -import { HAS_TAGS } from '@woocommerce/settings'; +import { HAS_TAGS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/product-tag/index.js b/plugins/woocommerce-blocks/assets/js/blocks/product-tag/index.js index 10d46410790..6d476f44c82 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/product-tag/index.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/product-tag/index.js @@ -3,7 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import { registerBlockType } from '@wordpress/blocks'; -import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/settings'; +import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/products-by-attribute/index.js b/plugins/woocommerce-blocks/assets/js/blocks/products-by-attribute/index.js index 7c123b404ad..53faf86193c 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/products-by-attribute/index.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/products-by-attribute/index.js @@ -4,7 +4,7 @@ import { __ } from '@wordpress/i18n'; import Gridicon from 'gridicons'; import { registerBlockType } from '@wordpress/blocks'; -import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/settings'; +import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/reviews/edit-utils.js b/plugins/woocommerce-blocks/assets/js/blocks/reviews/edit-utils.js index b3781ef9e7f..c339ae1605b 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/reviews/edit-utils.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/reviews/edit-utils.js @@ -10,7 +10,7 @@ import { } from '@wordpress/components'; import { BlockControls } from '@wordpress/editor'; import { getAdminLink } from '@woocommerce/navigation'; -import { ENABLE_REVIEW_RATING, SHOW_AVATARS } from '@woocommerce/settings'; +import { ENABLE_REVIEW_RATING, SHOW_AVATARS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/reviews/editor-block.js b/plugins/woocommerce-blocks/assets/js/blocks/reviews/editor-block.js index 010335e8c3f..4e9a77ae706 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/reviews/editor-block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/reviews/editor-block.js @@ -5,7 +5,7 @@ import { __ } from '@wordpress/i18n'; import { Component } from 'react'; import PropTypes from 'prop-types'; import { Disabled } from '@wordpress/components'; -import { ENABLE_REVIEW_RATING } from '@woocommerce/settings'; +import { ENABLE_REVIEW_RATING } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/reviews/frontend-block.js b/plugins/woocommerce-blocks/assets/js/blocks/reviews/frontend-block.js index 731f431346c..1f90d12ebae 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/reviews/frontend-block.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/reviews/frontend-block.js @@ -4,7 +4,7 @@ import { __ } from '@wordpress/i18n'; import { Fragment } from 'react'; import PropTypes from 'prop-types'; -import { ENABLE_REVIEW_RATING } from '@woocommerce/settings'; +import { ENABLE_REVIEW_RATING } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/blocks/reviews/utils.js b/plugins/woocommerce-blocks/assets/js/blocks/reviews/utils.js index 77f226caf91..4fdb903c6dd 100644 --- a/plugins/woocommerce-blocks/assets/js/blocks/reviews/utils.js +++ b/plugins/woocommerce-blocks/assets/js/blocks/reviews/utils.js @@ -3,7 +3,7 @@ */ import apiFetch from '@wordpress/api-fetch'; import classNames from 'classnames'; -import { ENABLE_REVIEW_RATING } from '@woocommerce/settings'; +import { ENABLE_REVIEW_RATING } from '@woocommerce/block-settings'; export const getOrderArgs = ( orderValue ) => { if ( ENABLE_REVIEW_RATING ) { diff --git a/plugins/woocommerce-blocks/assets/js/components/grid-layout-control/index.js b/plugins/woocommerce-blocks/assets/js/components/grid-layout-control/index.js index 06a12bb43b4..a15a5682da5 100644 --- a/plugins/woocommerce-blocks/assets/js/components/grid-layout-control/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/grid-layout-control/index.js @@ -6,7 +6,7 @@ import { clamp, isNaN } from 'lodash'; import { Fragment } from '@wordpress/element'; import PropTypes from 'prop-types'; import { RangeControl, ToggleControl } from '@wordpress/components'; -import { MAX_COLUMNS, MIN_COLUMNS, MAX_ROWS, MIN_ROWS } from '@woocommerce/settings'; +import { MAX_COLUMNS, MIN_COLUMNS, MAX_ROWS, MIN_ROWS } from '@woocommerce/block-settings'; /** * A combination of range controls for product grid layout settings. diff --git a/plugins/woocommerce-blocks/assets/js/components/product-attribute-control/index.js b/plugins/woocommerce-blocks/assets/js/components/product-attribute-control/index.js index 17d6a0c748b..f6ee7dea8e5 100644 --- a/plugins/woocommerce-blocks/assets/js/components/product-attribute-control/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/product-attribute-control/index.js @@ -9,7 +9,7 @@ import { debounce, find } from 'lodash'; import PropTypes from 'prop-types'; import { SearchListControl, SearchListItem } from '@woocommerce/components'; import { SelectControl, Spinner } from '@wordpress/components'; -import { ENDPOINTS } from '@woocommerce/settings'; +import { ENDPOINTS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/components/product-category-control/index.js b/plugins/woocommerce-blocks/assets/js/components/product-category-control/index.js index 4c1767eccc1..3dd36ac40b1 100644 --- a/plugins/woocommerce-blocks/assets/js/components/product-category-control/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/product-category-control/index.js @@ -9,7 +9,7 @@ import { find } from 'lodash'; import PropTypes from 'prop-types'; import { SearchListControl, SearchListItem } from '@woocommerce/components'; import { SelectControl } from '@wordpress/components'; -import { ENDPOINTS } from '@woocommerce/settings'; +import { ENDPOINTS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/components/product-control/index.js b/plugins/woocommerce-blocks/assets/js/components/product-control/index.js index 491da0bdbc7..3ed918b79f3 100644 --- a/plugins/woocommerce-blocks/assets/js/components/product-control/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/product-control/index.js @@ -13,7 +13,7 @@ import { } from '@woocommerce/components'; import { Spinner, MenuItem } from '@wordpress/components'; import classnames from 'classnames'; -import { ENDPOINTS, IS_LARGE_CATALOG } from '@woocommerce/settings'; +import { ENDPOINTS, IS_LARGE_CATALOG } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/components/product-preview/index.js b/plugins/woocommerce-blocks/assets/js/components/product-preview/index.js index 9d742bbd9f6..843f16c9c29 100644 --- a/plugins/woocommerce-blocks/assets/js/components/product-preview/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/product-preview/index.js @@ -3,7 +3,7 @@ */ import { __ } from '@wordpress/i18n'; import PropTypes from 'prop-types'; -import { PLACEHOLDER_IMG_SRC, THUMBNAIL_SIZE } from '@woocommerce/settings'; +import { PLACEHOLDER_IMG_SRC, THUMBNAIL_SIZE } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/components/product-preview/test/index.js b/plugins/woocommerce-blocks/assets/js/components/product-preview/test/index.js index 95aefcbd044..9be614efa3a 100644 --- a/plugins/woocommerce-blocks/assets/js/components/product-preview/test/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/product-preview/test/index.js @@ -8,7 +8,7 @@ import TestRenderer from 'react-test-renderer'; */ import ProductPreview from '../'; -jest.mock( '@woocommerce/settings', () => ( { +jest.mock( '@woocommerce/block-settings', () => ( { PLACEHOLDER_IMG_SRC: 'placeholder.png', THUMBNAIL_SIZE: 300, } ) ); diff --git a/plugins/woocommerce-blocks/assets/js/components/product-tag-control/index.js b/plugins/woocommerce-blocks/assets/js/components/product-tag-control/index.js index e0f11c82bc3..7f2ec5a7927 100644 --- a/plugins/woocommerce-blocks/assets/js/components/product-tag-control/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/product-tag-control/index.js @@ -7,7 +7,7 @@ import { debounce, find } from 'lodash'; import PropTypes from 'prop-types'; import { SearchListControl, SearchListItem } from '@woocommerce/components'; import { SelectControl } from '@wordpress/components'; -import { LIMIT_TAGS } from '@woocommerce/settings'; +import { LIMIT_TAGS } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/components/utils/index.js b/plugins/woocommerce-blocks/assets/js/components/utils/index.js index 54ba8e7d086..23b451ceb4b 100644 --- a/plugins/woocommerce-blocks/assets/js/components/utils/index.js +++ b/plugins/woocommerce-blocks/assets/js/components/utils/index.js @@ -4,7 +4,7 @@ import { addQueryArgs } from '@wordpress/url'; import apiFetch from '@wordpress/api-fetch'; import { flatten, uniqBy } from 'lodash'; -import { ENDPOINTS, IS_LARGE_CATALOG, LIMIT_TAGS } from '@woocommerce/settings'; +import { ENDPOINTS, IS_LARGE_CATALOG, LIMIT_TAGS } from '@woocommerce/block-settings'; const getProductsRequests = ( { selected = [], search = '', queryArgs = [] } ) => { const defaultArgs = { diff --git a/plugins/woocommerce-blocks/assets/js/hocs/test/with-searched-products.js b/plugins/woocommerce-blocks/assets/js/hocs/test/with-searched-products.js index 0901da8483d..37f9faa11e6 100644 --- a/plugins/woocommerce-blocks/assets/js/hocs/test/with-searched-products.js +++ b/plugins/woocommerce-blocks/assets/js/hocs/test/with-searched-products.js @@ -10,7 +10,7 @@ import _ from 'lodash'; import withSearchedProducts from '../with-searched-products'; import * as mockedUtils from '../../components/utils'; -jest.mock( '@woocommerce/settings', () => ( { +jest.mock( '@woocommerce/block-settings', () => ( { IS_LARGE_CATALOG: true, } ) ); diff --git a/plugins/woocommerce-blocks/assets/js/hocs/with-searched-products.js b/plugins/woocommerce-blocks/assets/js/hocs/with-searched-products.js index 5f43997b1fc..19cc667aff1 100644 --- a/plugins/woocommerce-blocks/assets/js/hocs/with-searched-products.js +++ b/plugins/woocommerce-blocks/assets/js/hocs/with-searched-products.js @@ -5,7 +5,7 @@ import { Component } from '@wordpress/element'; import { debounce } from 'lodash'; import { createHigherOrderComponent } from '@wordpress/compose'; import PropTypes from 'prop-types'; -import { IS_LARGE_CATALOG } from '@woocommerce/settings'; +import { IS_LARGE_CATALOG } from '@woocommerce/block-settings'; /** * Internal dependencies diff --git a/plugins/woocommerce-blocks/assets/js/settings/endpoints.js b/plugins/woocommerce-blocks/assets/js/settings/blocks/endpoints.js similarity index 100% rename from plugins/woocommerce-blocks/assets/js/settings/endpoints.js rename to plugins/woocommerce-blocks/assets/js/settings/blocks/endpoints.js diff --git a/plugins/woocommerce-blocks/assets/js/settings/product-block-data.js b/plugins/woocommerce-blocks/assets/js/settings/blocks/index.js similarity index 97% rename from plugins/woocommerce-blocks/assets/js/settings/product-block-data.js rename to plugins/woocommerce-blocks/assets/js/settings/blocks/index.js index 5280f829454..2a3f0016129 100644 --- a/plugins/woocommerce-blocks/assets/js/settings/product-block-data.js +++ b/plugins/woocommerce-blocks/assets/js/settings/blocks/index.js @@ -22,3 +22,4 @@ export const LIMIT_TAGS = getConstantFromData( 'limitTags' ); export const HAS_TAGS = getConstantFromData( 'hasTags', true ); export const HOME_URL = getConstantFromData( 'homeUrl ', '' ); export const PRODUCT_CATEGORIES = getConstantFromData( 'productCategories', [] ); +export { ENDPOINTS } from './endpoints'; diff --git a/plugins/woocommerce-blocks/assets/js/settings/index.js b/plugins/woocommerce-blocks/assets/js/settings/index.js deleted file mode 100644 index 5790a5fca27..00000000000 --- a/plugins/woocommerce-blocks/assets/js/settings/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export { default as currency } from './currency'; -export { ENDPOINTS } from './endpoints'; -export * from './product-block-data'; diff --git a/plugins/woocommerce-blocks/assets/js/settings/currency.js b/plugins/woocommerce-blocks/assets/js/settings/shared/currency.js similarity index 100% rename from plugins/woocommerce-blocks/assets/js/settings/currency.js rename to plugins/woocommerce-blocks/assets/js/settings/shared/currency.js diff --git a/plugins/woocommerce-blocks/assets/js/settings/shared/index.js b/plugins/woocommerce-blocks/assets/js/settings/shared/index.js new file mode 100644 index 00000000000..a2bc812a278 --- /dev/null +++ b/plugins/woocommerce-blocks/assets/js/settings/shared/index.js @@ -0,0 +1,2 @@ +// Exports shared settings from wcSettings global. +export { default as currency } from './currency'; diff --git a/plugins/woocommerce-blocks/assets/js/utils/get-query.js b/plugins/woocommerce-blocks/assets/js/utils/get-query.js index a618685de32..88a35cbe8a6 100644 --- a/plugins/woocommerce-blocks/assets/js/utils/get-query.js +++ b/plugins/woocommerce-blocks/assets/js/utils/get-query.js @@ -2,7 +2,7 @@ * External dependencies */ import { min } from 'lodash'; -import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/settings'; +import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/block-settings'; export default function getQuery( blockAttributes, name ) { const { diff --git a/plugins/woocommerce-blocks/assets/js/utils/get-shortcode.js b/plugins/woocommerce-blocks/assets/js/utils/get-shortcode.js index 899f6f8cafe..1de046090e7 100644 --- a/plugins/woocommerce-blocks/assets/js/utils/get-shortcode.js +++ b/plugins/woocommerce-blocks/assets/js/utils/get-shortcode.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/settings'; +import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/block-settings'; export default function getShortcode( props, name ) { const blockAttributes = props.attributes; diff --git a/plugins/woocommerce-blocks/assets/js/utils/shared-attributes.js b/plugins/woocommerce-blocks/assets/js/utils/shared-attributes.js index 5ec4f34c557..129b009116c 100644 --- a/plugins/woocommerce-blocks/assets/js/utils/shared-attributes.js +++ b/plugins/woocommerce-blocks/assets/js/utils/shared-attributes.js @@ -1,7 +1,7 @@ /** * External dependencies */ -import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/settings'; +import { DEFAULT_COLUMNS, DEFAULT_ROWS } from '@woocommerce/block-settings'; export const sharedAttributeBlockTypes = [ 'woocommerce/product-best-sellers', diff --git a/plugins/woocommerce-blocks/src/Assets.php b/plugins/woocommerce-blocks/src/Assets.php index 8e9deabe5f9..be49b830617 100644 --- a/plugins/woocommerce-blocks/src/Assets.php +++ b/plugins/woocommerce-blocks/src/Assets.php @@ -19,6 +19,10 @@ class Assets { */ public static function init() { add_action( 'init', array( __CLASS__, 'register_assets' ) ); + add_action( 'admin_print_scripts', array( __CLASS__, 'maybe_add_asset_data' ), 1 ); + add_action( 'admin_print_footer_scripts', array( __CLASS__, 'maybe_add_asset_data' ), 1 ); + add_action( 'wp_print_scripts', array( __CLASS__, 'maybe_add_asset_data' ), 1 ); + add_action( 'wp_print_footer_scripts', array( __CLASS__, 'maybe_add_asset_data' ), 1 ); add_action( 'body_class', array( __CLASS__, 'add_theme_body_class' ), 1 ); } @@ -27,12 +31,13 @@ class Assets { */ public static function register_assets() { self::register_style( 'wc-block-editor', plugins_url( 'build/editor.css', __DIR__ ), array( 'wp-edit-blocks' ) ); - self::register_style( 'wc-block-style', plugins_url( 'build/style.css', __DIR__ ), array() ); + self::register_style( 'wc-block-style', plugins_url( 'build/style.css', __DIR__ ), [] ); // Shared libraries and components across all blocks. - self::register_script( 'wc-block-settings', plugins_url( 'build/wc-blocks-settings.js', __DIR__ ), [], false ); - self::register_script( 'wc-blocks', plugins_url( 'build/blocks.js', __DIR__ ), array(), false ); - self::register_script( 'wc-vendors', plugins_url( 'build/vendors.js', __DIR__ ), array(), false ); + self::register_script( 'wc-shared-settings', plugins_url( 'build/wc-shared-settings.js', __DIR__ ), [], false ); + self::register_script( 'wc-block-settings', plugins_url( 'build/wc-block-settings.js', __DIR__ ), [], false ); + self::register_script( 'wc-blocks', plugins_url( 'build/blocks.js', __DIR__ ), [], false ); + self::register_script( 'wc-vendors', plugins_url( 'build/vendors.js', __DIR__ ), [ 'wc-shared-settings' ], false ); // Individual blocks. self::register_script( 'wc-handpicked-products', plugins_url( 'build/handpicked-products.js', __DIR__ ), array( 'wc-vendors', 'wc-blocks' ) ); @@ -50,13 +55,26 @@ class Assets { self::register_script( 'wc-reviews-by-product', plugins_url( 'build/reviews-by-product.js', __DIR__ ), array( 'wc-vendors', 'wc-blocks' ) ); self::register_script( 'wc-reviews-by-category', plugins_url( 'build/reviews-by-category.js', __DIR__ ), array( 'wc-vendors', 'wc-blocks' ) ); self::register_script( 'wc-product-search', plugins_url( 'build/product-search.js', __DIR__ ), array( 'wc-vendors', 'wc-blocks' ) ); + } - // attach data to wc-blocks-settings. - wp_add_inline_script( - 'wc-block-settings', - self::get_wc_settings_data() . "\n" . self::get_wc_block_data(), - 'before' - ); + /** + * Attach data to registered assets using inline scripts. + */ + public static function maybe_add_asset_data() { + if ( wp_script_is( 'wc-shared-settings', 'enqueued' ) ) { + wp_add_inline_script( + 'wc-shared-settings', + self::get_wc_settings_data(), + 'before' + ); + } + if ( wp_script_is( 'wc-block-settings', 'enqueued' ) ) { + wp_add_inline_script( + 'wc-block-settings', + self::get_wc_block_data(), + 'before' + ); + } } /** @@ -65,13 +83,13 @@ class Assets { * @param array $classes Array of CSS classnames. * @return array Modified array of CSS classnames. */ - public static function add_theme_body_class( $classes = array() ) { + public static function add_theme_body_class( $classes = [] ) { $classes[] = 'theme-' . get_template(); return $classes; } /** - * Returns javascript to inject as data for enqueued wc-blocks-settings script. + * Returns javascript to inject as data for enqueued wc-shared-settings script. * * @return string; * @since 2.4.0 @@ -96,7 +114,7 @@ class Assets { ), 'stockStatuses' => wc_get_product_stock_status_options(), 'siteTitle' => get_bloginfo( 'name' ), - 'dataEndpoints' => array(), + 'dataEndpoints' => [], 'l10n' => array( 'userLocale' => get_user_locale(), 'weekdaysShort' => array_values( $wp_locale->weekday_abbrev ), @@ -108,7 +126,7 @@ class Assets { } /** - * Returns block-related data for enqueued wc-blocks-settings script. + * Returns block-related data for enqueued wc-shared-settings script. * * This is used to map site settings & data into JS-accessible variables. * @@ -176,11 +194,11 @@ class Assets { * @param array $deps Optional. An array of registered script handles this script depends on. Default empty array. * @param bool $has_i18n Optional. Whether to add a script translation call to this file. Default 'true'. */ - protected static function register_script( $handle, $src, $deps = array(), $has_i18n = true ) { + protected static function register_script( $handle, $src, $deps = [], $has_i18n = true ) { $filename = str_replace( plugins_url( '/', __DIR__ ), '', $src ); $ver = self::get_file_version( $filename ); $deps_path = dirname( __DIR__ ) . '/' . str_replace( '.js', '.deps.json', $filename ); - $dependencies = file_exists( $deps_path ) ? json_decode( file_get_contents( $deps_path ) ) : array(); // phpcs:ignore WordPress.WP.AlternativeFunctions + $dependencies = file_exists( $deps_path ) ? json_decode( file_get_contents( $deps_path ) ) : []; // phpcs:ignore WordPress.WP.AlternativeFunctions $dependencies = array_merge( $dependencies, $deps ); wp_register_script( $handle, $src, $dependencies, $ver, true ); @@ -213,7 +231,7 @@ class Assets { * @param string $media Optional. The media for which this stylesheet has been defined. Default 'all'. Accepts media types like * 'all', 'print' and 'screen', or media queries like '(orientation: portrait)' and '(max-width: 640px)'. */ - protected static function register_style( $handle, $src, $deps = array(), $media = 'all' ) { + protected static function register_style( $handle, $src, $deps = [], $media = 'all' ) { $filename = str_replace( plugins_url( '/', __DIR__ ), '', $src ); $ver = self::get_file_version( $filename ); wp_register_style( $handle, $src, $deps, $ver, $media ); diff --git a/plugins/woocommerce-blocks/tests/js/jest.config.json b/plugins/woocommerce-blocks/tests/js/jest.config.json index b3a5ef4ccd0..dcc9e5fd5e6 100644 --- a/plugins/woocommerce-blocks/tests/js/jest.config.json +++ b/plugins/woocommerce-blocks/tests/js/jest.config.json @@ -8,7 +8,8 @@ ], "moduleDirectories": ["node_modules"], "moduleNameMapper": { - "@woocommerce/settings": "assets/js/settings" + "@woocommerce/settings": "assets/js/settings/shared", + "@woocommerce/block-settings": "assets/js/settings/blocks" }, "setupFiles": [ "/node_modules/@wordpress/jest-preset-default/scripts/setup-globals.js", diff --git a/plugins/woocommerce-blocks/webpack.config.js b/plugins/woocommerce-blocks/webpack.config.js index aede6a42d0a..91aaff713c9 100644 --- a/plugins/woocommerce-blocks/webpack.config.js +++ b/plugins/woocommerce-blocks/webpack.config.js @@ -37,7 +37,8 @@ const baseConfig = { const requestToExternal = ( request ) => { const wcDepMap = { - '@woocommerce/settings': [ 'wc', 'blockSettings' ], + '@woocommerce/settings': [ 'wc', 'wc-shared-settings' ], + '@woocommerce/block-settings': [ 'wc', 'wc-block-settings' ], }; if ( wcDepMap[ request ] ) { return wcDepMap[ request ]; @@ -46,7 +47,8 @@ const requestToExternal = ( request ) => { const requestToHandle = ( request ) => { const wcHandleMap = { - '@woocommerce/settings': 'wc-block-settings', + '@woocommerce/settings': 'wc-shared-settings', + '@woocommerce/block-settings': 'wc-block-settings', }; if ( wcHandleMap[ request ] ) { return wcHandleMap[ request ]; @@ -56,12 +58,13 @@ const requestToHandle = ( request ) => { const CoreConfig = { ...baseConfig, entry: { - 'wc-blocks-settings': './assets/js/settings/index.js', + 'wc-shared-settings': './assets/js/settings/shared/index.js', + 'wc-block-settings': './assets/js/settings/blocks/index.js', }, output: { filename: '[name].js', path: path.resolve( __dirname, './build/' ), - library: [ 'wc', 'blockSettings' ], + library: [ 'wc', '[name]' ], libraryTarget: 'this', // This fixes an issue with multiple webpack projects using chunking // overwriting each other's chunk loader function.