From 5836849ab949db2d2b1afe6ac69b4e1bc3bd9740 Mon Sep 17 00:00:00 2001 From: David Ralph Date: Sun, 28 Feb 2021 12:51:26 +0000 Subject: [PATCH] Add merge function from @eartharoid Co-authored-by: Isaac Saunders --- package.json | 3 +-- src/App.jsx | 2 +- src/modules/helpers/merge.js | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 src/modules/helpers/merge.js diff --git a/package.json b/package.json index 0f5e6e1c..74f721e7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mue", "private": true, - "author": "David \"ohlookitsderpy\" Ralph (https://derpyenterprises.org)", + "author": "David \"ohlookitsderpy\" Ralph (https://davidjcralph.co.uk)", "description": "Fast, open and free-to-use new tab page for modern browsers.", "repository": { "url": "github:mue/mue" @@ -16,7 +16,6 @@ "@fontsource/roboto": "^4.2.1", "@material-ui/core": "4.11.3", "@material-ui/icons": "4.11.2", - "deepmerge": "^4.2.2", "react": "17.0.1", "react-clock": "^3.0.0", "react-color-gradient-picker": "^0.1.2", diff --git a/src/App.jsx b/src/App.jsx index f3e3fbea..2904be68 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,7 +8,7 @@ import Navbar from './components/widgets/navbar/Navbar'; import SettingsFunctions from './modules/helpers/settings'; import { ToastContainer } from 'react-toastify'; import Modal from 'react-modal'; -import merge from 'deepmerge'; +import merge from './modules/helpers/merge'; // Modals are lazy loaded as the user won't use them every time they open a tab const Main = React.lazy(() => import('./components/modals/Main')); diff --git a/src/modules/helpers/merge.js b/src/modules/helpers/merge.js new file mode 100644 index 00000000..e5600462 --- /dev/null +++ b/src/modules/helpers/merge.js @@ -0,0 +1,19 @@ +export default function deepmerge(...objects) { + let target = {}; + + const merge = (obj) => { + for (let prop in obj) { + if (obj.hasOwnProperty(prop)) { + if (typeof obj[prop] === 'object') { + target[prop] = deepmerge(target[prop], obj[prop]); + } else { + target[prop] = obj[prop]; + } + } + } + }; + + objects.forEach(object => merge(object)); + + return target; +} \ No newline at end of file