From b4fc613da30bf26fcadef727a4f550d10e9f5e25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Tue, 12 Mar 2024 11:43:36 +0100 Subject: [PATCH] fix: Use clone to avoid pass by reference (#19) --- src/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/index.js b/src/index.js index 40206b5..4792cac 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,4 @@ +import { cloneDeep } from 'lodash'; import codeSVG from '@plone/volto/icons/code.svg'; import showcaseSVG from '@plone/volto/icons/showcase.svg'; @@ -96,16 +97,15 @@ const applyConfig = (config) => { }; // Add Blocks to gridBlock and accordionBlock + // It's important to maintain the chain, and do not introduce pass by reference in + // the internal `blocksConfig` object, so we clone the object to avoid this. ['gridBlock', 'accordion'].forEach((blockId) => { const block = config.blocks.blocksConfig[blockId]; if (block !== undefined) { - config.blocks.blocksConfig.gridBlock = { - ...config.blocks.blocksConfig.gridBlock, - blocksConfig: { - ...config.blocks.blocksConfig, - }, - allowedBlocks: [...config.blocks.blocksConfig.gridBlock.allowedBlocks, 'codeBlock', 'mermaidBlock', 'gistBlock'], - }; + block.allowedBlocks = [...block.allowedBlocks, 'codeBlock', 'mermaidBlock', 'gistBlock']; + block.blocksConfig.codeBlock = cloneDeep(config.blocks.blocksConfig.codeBlock); + block.blocksConfig.mermaidBlock = cloneDeep(config.blocks.blocksConfig.mermaidBlock); + block.blocksConfig.gistBlock = cloneDeep(config.blocks.blocksConfig.gistBlock); } });