From 37556b8d06d34452be996624296f34c7345ffbc1 Mon Sep 17 00:00:00 2001 From: Szymon Cofalik Date: Thu, 28 Mar 2019 14:54:54 +0100 Subject: [PATCH] Internal: Rewritten `model.Writer#wrap()` to use `insert()` and `move()` instead of own code. --- src/model/writer.js | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/model/writer.js b/src/model/writer.js index 182c9022d..44c41f0a1 100644 --- a/src/model/writer.js +++ b/src/model/writer.js @@ -814,22 +814,12 @@ export default class Writer { throw new CKEditorError( 'writer-wrap-element-attached: Element to wrap with is already attached to tree model.' ); } - const version = range.root.document ? range.root.document.version : null; - - // Has to be `range.start` not `range.end` for better transformations. - const insert = new InsertOperation( range.start, element, version ); - this.batch.addOperation( insert ); - this.model.applyOperation( insert ); + this.insert( element, range.start ); - const move = new MoveOperation( - range.start.getShiftedBy( 1 ), - range.end.offset - range.start.offset, - Position._createAt( element, 0 ), - version === null ? null : version + 1 - ); + // Shift the range-to-wrap because we just inserted an element before that range. + const shiftedRange = new Range( range.start.getShiftedBy( 1 ), range.end.getShiftedBy( 1 ) ); - this.batch.addOperation( move ); - this.model.applyOperation( move ); + this.move( shiftedRange, Position._createAt( element, 0 ) ); } /**