From 08107187eb039eababf925c8216ee2b7d5166d41 Mon Sep 17 00:00:00 2001 From: Jason Chen Date: Tue, 14 Apr 2020 20:16:11 -0700 Subject: [PATCH] add lodash merge to replace extend --- core/editor.js | 6 +++--- core/quill.js | 8 +++----- modules/clipboard.js | 7 ++----- package-lock.json | 5 +++++ package.json | 1 + themes/base.js | 4 ++-- themes/bubble.js | 4 ++-- themes/snow.js | 4 ++-- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/core/editor.js b/core/editor.js index 169ac26d0d..a88ef848cf 100644 --- a/core/editor.js +++ b/core/editor.js @@ -1,6 +1,6 @@ -import extend from 'extend'; import cloneDeep from 'lodash.clonedeep'; import isEqual from 'lodash.isequal'; +import merge from 'lodash.merge'; import Delta, { AttributeMap } from 'quill-delta'; import { LeafBlot } from 'parchment'; import { Range } from './selection'; @@ -42,10 +42,10 @@ class Editor { } this.scroll.insertAt(index, text); const [line, offset] = this.scroll.line(index); - let formats = extend({}, bubbleFormats(line)); + let formats = merge({}, bubbleFormats(line)); if (line instanceof Block) { const [leaf] = line.descendant(LeafBlot, offset); - formats = extend(formats, bubbleFormats(leaf)); + formats = merge(formats, bubbleFormats(leaf)); } attributes = AttributeMap.diff(formats, attributes) || {}; } else if (typeof op.insert === 'object') { diff --git a/core/quill.js b/core/quill.js index b61f076076..2ee1578e1e 100644 --- a/core/quill.js +++ b/core/quill.js @@ -1,7 +1,7 @@ import Delta from 'quill-delta'; import cloneDeep from 'lodash.clonedeep'; +import merge from 'lodash.merge'; import * as Parchment from 'parchment'; -import extend from 'extend'; import Editor from './editor'; import Emitter from './emitter'; import Module from './module'; @@ -458,8 +458,7 @@ Quill.imports = { }; function expandConfig(container, userConfig) { - userConfig = extend( - true, + userConfig = merge( { container, modules: { @@ -514,8 +513,7 @@ function expandConfig(container, userConfig) { container: userConfig.modules.toolbar, }; } - userConfig = extend( - true, + userConfig = merge( {}, Quill.DEFAULTS, { modules: moduleConfig }, diff --git a/modules/clipboard.js b/modules/clipboard.js index 77c14a93f8..0b870ae370 100644 --- a/modules/clipboard.js +++ b/modules/clipboard.js @@ -1,4 +1,3 @@ -import extend from 'extend'; import Delta from 'quill-delta'; import { Attributor, @@ -219,10 +218,8 @@ function applyFormat(delta, format, value) { if (op.attributes && op.attributes[format]) { return newDelta.push(op); } - return newDelta.insert( - op.insert, - extend({}, { [format]: value }, op.attributes), - ); + const formats = value ? { [format]: value } : {}; + return newDelta.insert(op.insert, { ...formats, ...op.attributes }); }, new Delta()); } diff --git a/package-lock.json b/package-lock.json index 2e0b1f8b82..72b1e88c22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7731,6 +7731,11 @@ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, "log4js": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", diff --git a/package.json b/package.json index 07651bfacc..6185b28099 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "extend": "^3.0.2", "lodash.clonedeep": "^4.5.0", "lodash.isequal": "^4.5.0", + "lodash.merge": "^4.5.0", "parchment": "2.0.0-dev.2", "quill-delta": "4.2.1" }, diff --git a/themes/base.js b/themes/base.js index 8249b90adb..dd7b6adeac 100644 --- a/themes/base.js +++ b/themes/base.js @@ -1,4 +1,4 @@ -import extend from 'extend'; +import merge from 'lodash.merge'; import Emitter from '../core/emitter'; import Theme from '../core/theme'; import ColorPicker from '../ui/color-picker'; @@ -151,7 +151,7 @@ class BaseTheme extends Theme { this.quill.on(Emitter.events.EDITOR_CHANGE, update); } } -BaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, { +BaseTheme.DEFAULTS = merge({}, Theme.DEFAULTS, { modules: { toolbar: { handlers: { diff --git a/themes/bubble.js b/themes/bubble.js index cf2a9b883d..713beb0b82 100644 --- a/themes/bubble.js +++ b/themes/bubble.js @@ -1,4 +1,4 @@ -import extend from 'extend'; +import merge from 'lodash.merge'; import Emitter from '../core/emitter'; import BaseTheme, { BaseTooltip } from './base'; import { Range } from '../core/selection'; @@ -107,7 +107,7 @@ class BubbleTheme extends BaseTheme { this.buildPickers(toolbar.container.querySelectorAll('select'), icons); } } -BubbleTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, { +BubbleTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, { modules: { toolbar: { handlers: { diff --git a/themes/snow.js b/themes/snow.js index 824f908a2c..7671d72504 100644 --- a/themes/snow.js +++ b/themes/snow.js @@ -1,4 +1,4 @@ -import extend from 'extend'; +import merge from 'lodash.merge'; import Emitter from '../core/emitter'; import BaseTheme, { BaseTooltip } from './base'; import LinkBlot from '../formats/link'; @@ -103,7 +103,7 @@ class SnowTheme extends BaseTheme { } } } -SnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, { +SnowTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, { modules: { toolbar: { handlers: {