Bladeren bron

Aligned code to changes in ViewSelection#setTo method.

Maciej Bukowski 7 jaren geleden
bovenliggende
commit
01026700bb

+ 1 - 1
packages/ckeditor5-engine/src/dev-utils/view.js

@@ -340,7 +340,7 @@ export function parse( data, options = {} ) {
 
 	// When ranges are present - return object containing view, and selection.
 	if ( ranges.length ) {
-		const selection = new Selection( ranges, !!options.lastRangeBackward );
+		const selection = new Selection( ranges, { backward: !!options.lastRangeBackward } );
 
 		return {
 			view,

+ 1 - 1
packages/ckeditor5-engine/src/view/domconverter.js

@@ -486,7 +486,7 @@ export default class DomConverter {
 			}
 		}
 
-		return new ViewSelection( viewRanges, isBackward );
+		return new ViewSelection( viewRanges, { backward: isBackward } );
 	}
 
 	/**

+ 1 - 2
packages/ckeditor5-engine/src/view/observer/mutationobserver.js

@@ -239,8 +239,7 @@ export default class MutationObserver extends Observer {
 
 			// Anchor and focus has to be properly mapped to view.
 			if ( viewSelectionAnchor && viewSelectionFocus ) {
-				viewSelection = new ViewSelection();
-				viewSelection._setTo( viewSelectionAnchor );
+				viewSelection = new ViewSelection( viewSelectionAnchor );
 				viewSelection._setFocus( viewSelectionFocus );
 			}
 		}

+ 4 - 4
packages/ckeditor5-engine/src/view/selection.js

@@ -41,11 +41,11 @@ export default class Selection {
 	 *
 	 *		// Creates selection at the given range.
 	 *		const range = new Range( start, end );
-	 *		const selection = new Selection( range, isBackwardSelection );
+	 *		const selection = new Selection( range, { backward } );
 	 *
 	 *		// Creates selection at the given ranges
 	 * 		const ranges = [ new Range( start1, end2 ), new Range( star2, end2 ) ];
-	 *		const selection = new Selection( ranges, isBackwardSelection );
+	 *		const selection = new Selection( ranges, { backward } );
 	 *
 	 *		// Creates selection from the other selection.
 	 *		const otherSelection = new Selection();
@@ -61,11 +61,11 @@ export default class Selection {
 	 *
 	 *		// Sets range inside the item.
 	 *		const paragraph = writer.createElement( 'paragraph' );
-	 *		selection.setTo( paragraph, 'in' );
+	 *		selection.setTo( paragraph, 'in', { backward } );
 	 *
 	 *		// Sets range on the item.
 	 *		const paragraph = writer.createElement( 'paragraph' );
-	 *		selection.setTo( paragraph, 'on' );
+	 *		selection.setTo( paragraph, 'on', { backward } );
 	 *
 	* @param {module:engine/view/selection~Selection|module:engine/view/position~Position|
 	 * Iterable.<module:engine/view/range~Range>|module:engine/view/range~Range|module:engine/view/item~Item|null} selectable

+ 17 - 6
packages/ckeditor5-engine/src/view/writer.js

@@ -52,19 +52,30 @@ export default class Writer {
 	 *		const position = new Position( root, path );
 	 *		writer.setSelection( position );
 	 *
-	 * 		// Sets collapsed range on the given item.
-	 *		const paragraph = writer.createContainerElement( 'paragraph' );
-	 *		writer.setSelection( paragraph, offset );
+	 * 		// Sets collapsed range at the position of given item and offset.
+	 *		const paragraph = writer.createElement( 'paragraph' );
+	 *		selection.setTo( paragraph, offset );
+	 *
+	 *		// Sets range inside the item.
+	 *		const paragraph = writer.createElement( 'paragraph' );
+	 *		selection.setTo( paragraph, 'in' );
+	 *
+	 *		// Sets range on the item.
+	 *		const paragraph = writer.createElement( 'paragraph' );
+	 *		selection.setTo( paragraph, 'on' );
 	 *
 	 * 		// Removes all ranges.
 	 *		writer.setSelection( null );
 	 *
 	 * @param {module:engine/view/selection~Selection|module:engine/view/position~Position|
 	 * Iterable.<module:engine/view/range~Range>|module:engine/view/range~Range|module:engine/view/item~Item|null} selectable
-	 * @param {Boolean|Number|'before'|'end'|'after'} [backwardSelectionOrOffset]
+	 * @param {Object|Number|'before'|'end'|'after'|'on'|'in'} [optionsOrPlaceOrOffset]
+	 * @param {Boolean} [optionsOrPlaceOrOffset.backward]
+	 * @param {Object} [options]
+	 * @param {Boolean} [options.backward]
 	 */
-	setSelection( selectable, backwardSelectionOrOffset ) {
-		this.document.selection._setTo( selectable, backwardSelectionOrOffset );
+	setSelection( selectable, optionsOrPlaceOrOffset, options ) {
+		this.document.selection._setTo( selectable, optionsOrPlaceOrOffset, options );
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/tests/conversion/upcast-selection-converters.js

@@ -104,7 +104,7 @@ describe( 'convertSelectionChange', () => {
 				viewRoot.getChild( 0 ).getChild( 0 ), 1, viewRoot.getChild( 0 ).getChild( 0 ), 2 ),
 			ViewRange.createFromParentsAndOffsets(
 				viewRoot.getChild( 1 ).getChild( 0 ), 1, viewRoot.getChild( 1 ).getChild( 0 ), 2 )
-		], true );
+		], { backward: true } );
 
 		convertSelection( null, { newSelection: viewSelection } );
 

+ 2 - 3
packages/ckeditor5-engine/tests/view/domconverter/binding.js

@@ -7,7 +7,6 @@
 
 import ViewElement from '../../../src/view/element';
 import ViewSelection from '../../../src/view/selection';
-import ViewRange from '../../../src/view/range';
 import DomConverter from '../../../src/view/domconverter';
 import ViewDocumentFragment from '../../../src/view/documentfragment';
 import { INLINE_FILLER } from '../../../src/view/filler';
@@ -270,7 +269,7 @@ describe( 'DomConverter', () => {
 		beforeEach( () => {
 			viewElement = new ViewElement();
 			domEl = document.createElement( 'div' );
-			selection = new ViewSelection( ViewRange.createIn( viewElement ) );
+			selection = new ViewSelection( viewElement, 'in' );
 			converter.bindFakeSelection( domEl, selection );
 		} );
 
@@ -283,7 +282,7 @@ describe( 'DomConverter', () => {
 		it( 'should keep a copy of selection', () => {
 			const selectionCopy = new ViewSelection( selection );
 
-			selection._setTo( ViewRange.createIn( new ViewElement() ), true );
+			selection._setTo( new ViewElement(), 'in', { backward: true } );
 			const bindSelection = converter.fakeSelectionToView( domEl );
 
 			expect( bindSelection ).to.not.equal( selection );

+ 2 - 3
packages/ckeditor5-engine/tests/view/domconverter/dom-to-view.js

@@ -6,7 +6,6 @@
 /* globals document */
 
 import ViewElement from '../../../src/view/element';
-import ViewRange from '../../../src/view/range';
 import ViewSelection from '../../../src/view/selection';
 import DomConverter from '../../../src/view/domconverter';
 import ViewDocumentFragment from '../../../src/view/documentfragment';
@@ -859,7 +858,7 @@ describe( 'DomConverter', () => {
 			domContainer.innerHTML = 'fake selection container';
 			document.body.appendChild( domContainer );
 
-			const viewSelection = new ViewSelection( ViewRange.createIn( new ViewElement() ) );
+			const viewSelection = new ViewSelection( new ViewElement(), 'in' );
 			converter.bindFakeSelection( domContainer, viewSelection );
 
 			const domRange = document.createRange();
@@ -880,7 +879,7 @@ describe( 'DomConverter', () => {
 			domContainer.innerHTML = 'fake selection container';
 			document.body.appendChild( domContainer );
 
-			const viewSelection = new ViewSelection( ViewRange.createIn( new ViewElement() ) );
+			const viewSelection = new ViewSelection( new ViewElement(), 'in' );
 			converter.bindFakeSelection( domContainer, viewSelection );
 
 			const domRange = document.createRange();

+ 2 - 2
packages/ckeditor5-engine/tests/view/writer/writer.js

@@ -23,9 +23,9 @@ describe( 'Writer', () => {
 		it( 'should use selection._setTo method internally', () => {
 			const spy = sinon.spy( writer.document.selection, '_setTo' );
 			const position = ViewPosition.createAt( root );
-			writer.setSelection( position, true );
+			writer.setSelection( position );
 
-			sinon.assert.calledWithExactly( spy, position, true );
+			sinon.assert.calledWith( spy, position );
 			spy.restore();
 		} );
 	} );