From f45058ec316c8ad81c4d932503e5ae9b606ce147 Mon Sep 17 00:00:00 2001 From: Andreas Geffen Lundahl Date: Mon, 9 Mar 2020 01:51:02 +0100 Subject: [PATCH] Avoid mutating the selection in Transforms.setPoint (#3541) Since Immer freezes the selection, we will get a TypeError if we try to mutate the selection. Also, there's no need to mutate it directly in Transforms.setPoint. --- packages/slate/src/transforms/selection.ts | 9 ++---- .../slate/test/transforms/setPoint/offset.js | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 packages/slate/test/transforms/setPoint/offset.js diff --git a/packages/slate/src/transforms/selection.ts b/packages/slate/src/transforms/selection.ts index 33730f358..aba27d086 100755 --- a/packages/slate/src/transforms/selection.ts +++ b/packages/slate/src/transforms/selection.ts @@ -157,13 +157,10 @@ export const SelectionTransforms = { const { anchor, focus } = selection const point = edge === 'anchor' ? anchor : focus - const newPoint = Object.assign(point, props) - if (edge === 'anchor') { - Transforms.setSelection(editor, { anchor: newPoint }) - } else { - Transforms.setSelection(editor, { focus: newPoint }) - } + Transforms.setSelection(editor, { + [edge === 'anchor' ? 'anchor' : 'focus']: { ...point, ...props }, + }) }, /** diff --git a/packages/slate/test/transforms/setPoint/offset.js b/packages/slate/test/transforms/setPoint/offset.js new file mode 100644 index 000000000..babfcd2f9 --- /dev/null +++ b/packages/slate/test/transforms/setPoint/offset.js @@ -0,0 +1,28 @@ +/** @jsx jsx */ + +import { Editor, Transforms } from 'slate' +import { jsx } from '../..' + +export const run = editor => { + Transforms.move(editor) + Transforms.setPoint(editor, { offset: 0 }, { edge: 'focus' }) +} + +export const input = ( + + + f + oo + + +) + +export const output = ( + + + + fo + o + + +)