From 2523dc4f6e7fee81baf77a67da4c3adaab921f15 Mon Sep 17 00:00:00 2001 From: Victor Baron Date: Mon, 22 Nov 2021 17:09:51 +0100 Subject: [PATCH] Fix deep-equality for array properties (#4672) --- .changeset/merge-nodes-issue | 5 ----- .changeset/wicked-mayflies-approve.md | 5 +++++ packages/slate/src/utils/deep-equal.ts | 1 - .../deep-equal/deep-equals-with-array.js | 20 +++++++++++++++++++ .../deep-equal/deep-not-equals-with-array.js | 20 +++++++++++++++++++ 5 files changed, 45 insertions(+), 6 deletions(-) delete mode 100644 .changeset/merge-nodes-issue create mode 100644 .changeset/wicked-mayflies-approve.md create mode 100644 packages/slate/test/utils/deep-equal/deep-equals-with-array.js create mode 100644 packages/slate/test/utils/deep-equal/deep-not-equals-with-array.js diff --git a/.changeset/merge-nodes-issue b/.changeset/merge-nodes-issue deleted file mode 100644 index b0e6a4de2..000000000 --- a/.changeset/merge-nodes-issue +++ /dev/null @@ -1,5 +0,0 @@ ---- -"slate": patch ---- - -Do not remove empty node in merge operation if it is first children in its parent. diff --git a/.changeset/wicked-mayflies-approve.md b/.changeset/wicked-mayflies-approve.md new file mode 100644 index 000000000..bed406cad --- /dev/null +++ b/.changeset/wicked-mayflies-approve.md @@ -0,0 +1,5 @@ +--- +'slate': minor +--- + +Fix - deep-equals was always returning true when array props were equals. diff --git a/packages/slate/src/utils/deep-equal.ts b/packages/slate/src/utils/deep-equal.ts index 027057909..6677c3dfe 100644 --- a/packages/slate/src/utils/deep-equal.ts +++ b/packages/slate/src/utils/deep-equal.ts @@ -24,7 +24,6 @@ export const isDeepEqual = ( for (let i = 0; i < a.length; i++) { if (a[i] !== b[i]) return false } - return true } else if (a !== b) { return false } diff --git a/packages/slate/test/utils/deep-equal/deep-equals-with-array.js b/packages/slate/test/utils/deep-equal/deep-equals-with-array.js new file mode 100644 index 000000000..346bd0d4c --- /dev/null +++ b/packages/slate/test/utils/deep-equal/deep-equals-with-array.js @@ -0,0 +1,20 @@ +import { isDeepEqual } from '../../../src/utils/deep-equal' + +export const input = { + objectA: { + text: 'same text', + array: ['array-content'], + bold: true, + }, + objectB: { + text: 'same text', + array: ['array-content'], + bold: true, + }, +} + +export const test = ({ objectA, objectB }) => { + return isDeepEqual(objectA, objectB) +} + +export const output = true diff --git a/packages/slate/test/utils/deep-equal/deep-not-equals-with-array.js b/packages/slate/test/utils/deep-equal/deep-not-equals-with-array.js new file mode 100644 index 000000000..9015d0084 --- /dev/null +++ b/packages/slate/test/utils/deep-equal/deep-not-equals-with-array.js @@ -0,0 +1,20 @@ +import { isDeepEqual } from '../../../src/utils/deep-equal' + +export const input = { + objectA: { + text: 'same text', + array: ['array-content'], + bold: true, + }, + objectB: { + text: 'same text', + array: ['array-content'], + bold: false, + }, +} + +export const test = ({ objectA, objectB }) => { + return isDeepEqual(objectA, objectB) +} + +export const output = false