From 0dc6fced3aefaca43cbcd922aa3a74fa456f3ed7 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Date: Wed, 14 Jun 2023 11:45:46 +0300 Subject: [PATCH 1/3] Lodash: Refactor away from _.mergeWith() --- .eslintrc.js | 1 + package-lock.json | 1 + packages/edit-site/package.json | 2 ++ .../global-styles/global-styles-provider.js | 16 +++++----------- 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 53e8cf888a18e..18763807cb36b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -110,6 +110,7 @@ const restrictedImports = [ 'maxBy', 'memoize', 'merge', + 'mergeWith', 'negate', 'noop', 'nth', diff --git a/package-lock.json b/package-lock.json index dba43ade0dc9b..8ee1f9e4b4640 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17861,6 +17861,7 @@ "colord": "^2.9.2", "downloadjs": "^1.4.7", "fast-deep-equal": "^3.1.3", + "is-plain-object": "^5.0.0", "lodash": "^4.17.21", "memize": "^2.1.0", "react-autosize-textarea": "^7.1.0", diff --git a/packages/edit-site/package.json b/packages/edit-site/package.json index 9108d71f83970..381f29a82e95f 100644 --- a/packages/edit-site/package.json +++ b/packages/edit-site/package.json @@ -66,8 +66,10 @@ "@wordpress/wordcount": "file:../wordcount", "classnames": "^2.3.1", "colord": "^2.9.2", + "deepmerge": "^4.3.0", "downloadjs": "^1.4.7", "fast-deep-equal": "^3.1.3", + "is-plain-object": "^5.0.0", "lodash": "^4.17.21", "memize": "^2.1.0", "react-autosize-textarea": "^7.1.0", diff --git a/packages/edit-site/src/components/global-styles/global-styles-provider.js b/packages/edit-site/src/components/global-styles/global-styles-provider.js index 829563342e847..3bdf53afc37a3 100644 --- a/packages/edit-site/src/components/global-styles/global-styles-provider.js +++ b/packages/edit-site/src/components/global-styles/global-styles-provider.js @@ -1,7 +1,8 @@ /** * External dependencies */ -import { mergeWith } from 'lodash'; +import deepmerge from 'deepmerge'; +import { isPlainObject } from 'is-plain-object'; /** * WordPress dependencies @@ -21,17 +22,10 @@ const { GlobalStylesContext, cleanEmptyObject } = unlock( blockEditorPrivateApis ); -function mergeTreesCustomizer( _, srcValue ) { - // We only pass as arrays the presets, - // in which case we want the new array of values - // to override the old array (no merging). - if ( Array.isArray( srcValue ) ) { - return srcValue; - } -} - export function mergeBaseAndUserConfigs( base, user ) { - return mergeWith( {}, base, user, mergeTreesCustomizer ); + return deepmerge( base, user, { + isMergeableObject: isPlainObject, + } ); } function useGlobalStylesUserConfig() { From 3a8c1013a76fecc3416d777f4c19b92a55c8c202 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Date: Wed, 14 Jun 2023 11:48:02 +0300 Subject: [PATCH 2/3] Add back the comment --- .../src/components/global-styles/global-styles-provider.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/edit-site/src/components/global-styles/global-styles-provider.js b/packages/edit-site/src/components/global-styles/global-styles-provider.js index 3bdf53afc37a3..f666e48c6febe 100644 --- a/packages/edit-site/src/components/global-styles/global-styles-provider.js +++ b/packages/edit-site/src/components/global-styles/global-styles-provider.js @@ -24,6 +24,9 @@ const { GlobalStylesContext, cleanEmptyObject } = unlock( export function mergeBaseAndUserConfigs( base, user ) { return deepmerge( base, user, { + // We only pass as arrays the presets, + // in which case we want the new array of values + // to override the old array (no merging). isMergeableObject: isPlainObject, } ); } From b4ef294f15cfbe3c0af199cfa3dae0b60832a9a6 Mon Sep 17 00:00:00 2001 From: Marin Atanasov Date: Wed, 14 Jun 2023 12:07:43 +0300 Subject: [PATCH 3/3] Update package-lock.json --- package-lock.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/package-lock.json b/package-lock.json index 8ee1f9e4b4640..8a1b97e65c5de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17859,6 +17859,7 @@ "@wordpress/wordcount": "file:packages/wordcount", "classnames": "^2.3.1", "colord": "^2.9.2", + "deepmerge": "^4.3.0", "downloadjs": "^1.4.7", "fast-deep-equal": "^3.1.3", "is-plain-object": "^5.0.0", @@ -17872,6 +17873,11 @@ "version": "2.9.2", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==" + }, + "deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" } } },