Sfoglia il codice sorgente

Merge branch t/ckeditor5-engine/1555

Internal: Use built-in factories of range, position and selection classes. Avoid importing things from the engine. See ckeditor/ckeditor5-engine#1555.
Piotrek Koszuliński 7 anni fa
parent
commit
adb74581ce

+ 2 - 2
packages/ckeditor5-media-embed/package.json

@@ -10,15 +10,15 @@
     "ckeditor5-plugin"
   ],
   "dependencies": {
-    "@ckeditor/ckeditor5-core": "^11.0.1",
     "@ckeditor/ckeditor5-clipboard": "^10.0.3",
+    "@ckeditor/ckeditor5-core": "^11.0.1",
     "@ckeditor/ckeditor5-engine": "^11.0.0",
     "@ckeditor/ckeditor5-enter": "^10.1.2",
     "@ckeditor/ckeditor5-image": "^11.0.0",
     "@ckeditor/ckeditor5-theme-lark": "^11.1.0",
     "@ckeditor/ckeditor5-ui": "^11.1.0",
-    "@ckeditor/ckeditor5-utils": "^11.0.0",
     "@ckeditor/ckeditor5-undo": "^10.0.3",
+    "@ckeditor/ckeditor5-utils": "^11.0.0",
     "@ckeditor/ckeditor5-widget": "^10.3.0"
   },
   "devDependencies": {

+ 5 - 5
packages/ckeditor5-media-embed/src/automediaembed.js

@@ -12,7 +12,6 @@ import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
 import Clipboard from '@ckeditor/ckeditor5-clipboard/src/clipboard';
 import LiveRange from '@ckeditor/ckeditor5-engine/src/model/liverange';
 import LivePosition from '@ckeditor/ckeditor5-engine/src/model/liveposition';
-import TreeWalker from '@ckeditor/ckeditor5-engine/src/model/treewalker';
 import Undo from '@ckeditor/ckeditor5-undo/src/undo';
 import global from '@ckeditor/ckeditor5-utils/src/dom/global';
 
@@ -77,10 +76,10 @@ export default class AutoMediaEmbed extends Plugin {
 		this.listenTo( editor.plugins.get( Clipboard ), 'inputTransformation', () => {
 			const firstRange = modelDocument.selection.getFirstRange();
 
-			const leftLivePosition = LivePosition.createFromPosition( firstRange.start );
+			const leftLivePosition = LivePosition.fromPosition( firstRange.start );
 			leftLivePosition.stickiness = 'toPrevious';
 
-			const rightLivePosition = LivePosition.createFromPosition( firstRange.end );
+			const rightLivePosition = LivePosition.fromPosition( firstRange.end );
 			rightLivePosition.stickiness = 'toNext';
 
 			modelDocument.once( 'change:data', () => {
@@ -113,8 +112,9 @@ export default class AutoMediaEmbed extends Plugin {
 	_embedMediaBetweenPositions( leftPosition, rightPosition ) {
 		const editor = this.editor;
 		const mediaRegistry = editor.plugins.get( MediaEmbedEditing ).registry;
+		// TODO: Use marker instead of LiveRange & LivePositions.
 		const urlRange = new LiveRange( leftPosition, rightPosition );
-		const walker = new TreeWalker( { boundaries: urlRange, ignoreElementEnd: true } );
+		const walker = urlRange.getWalker( { ignoreElementEnd: true } );
 
 		let url = '';
 
@@ -144,7 +144,7 @@ export default class AutoMediaEmbed extends Plugin {
 		}
 
 		// Position won't be available in the `setTimeout` function so let's clone it.
-		this._positionToInsert = LivePosition.createFromPosition( leftPosition );
+		this._positionToInsert = LivePosition.fromPosition( leftPosition );
 
 		// This action mustn't be executed if undo was called between pasting and auto-embedding.
 		this._timeoutId = global.window.setTimeout( () => {

+ 2 - 5
packages/ckeditor5-media-embed/src/converters.js

@@ -7,9 +7,6 @@
  * @module media-embed/converters
  */
 
-import ViewRange from '@ckeditor/ckeditor5-engine/src/view/range';
-import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
-
 /**
  * Returns a function that converts the model "url" attribute to the view representation.
  *
@@ -51,10 +48,10 @@ export function modelToViewUrlAttributeConverter( registry, options ) {
 		const figure = conversionApi.mapper.toViewElement( data.item );
 
 		// TODO: removing it and creating it from scratch is a hack. We can do better than that.
-		viewWriter.remove( ViewRange.createIn( figure ) );
+		viewWriter.remove( viewWriter.createRangeIn( figure ) );
 
 		const mediaViewElement = registry.getMediaViewElement( viewWriter, url, options );
 
-		viewWriter.insert( ViewPosition.createAt( figure, 0 ), mediaViewElement );
+		viewWriter.insert( viewWriter.createPositionAt( figure, 0 ), mediaViewElement );
 	}
 }

+ 1 - 1
packages/ckeditor5-media-embed/src/mediaembedcommand.js

@@ -62,7 +62,7 @@ export default class MediaEmbedCommand extends Command {
 				writer.setAttribute( 'url', url, selectedMedia );
 			} );
 		} else {
-			const insertPosition = findOptimalInsertionPosition( selection );
+			const insertPosition = findOptimalInsertionPosition( selection, model );
 
 			model.change( writer => {
 				const mediaElement = writer.createElement( 'media', { url } );

+ 1 - 2
packages/ckeditor5-media-embed/src/utils.js

@@ -7,7 +7,6 @@
  * @module media-embed/utils
  */
 
-import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
 import { isWidget, toWidget } from '@ckeditor/ckeditor5-widget/src/utils';
 
 const mediaSymbol = Symbol( 'isMedia' );
@@ -68,7 +67,7 @@ export function createMediaFigureElement( writer, registry, url, options ) {
 	// Note: The hack is a copy&paste from widget utils; it makes the figure act like it's a widget.
 	figure.getFillerOffset = getFillerOffset;
 
-	writer.insert( ViewPosition.createAt( figure, 0 ), registry.getMediaViewElement( writer, url, options ) );
+	writer.insert( writer.createPositionAt( figure, 0 ), registry.getMediaViewElement( writer, url, options ) );
 
 	return figure;
 }

+ 4 - 6
packages/ckeditor5-media-embed/tests/automediaembed.js

@@ -15,8 +15,6 @@ import List from '@ckeditor/ckeditor5-list/src/list';
 import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
 import Undo from '@ckeditor/ckeditor5-undo/src/undo';
 import Typing from '@ckeditor/ckeditor5-typing/src/typing';
-import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
-import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
 import Image from '@ckeditor/ckeditor5-image/src/image';
 import ImageCaption from '@ckeditor/ckeditor5-image/src/imagecaption';
 import global from '@ckeditor/ckeditor5-utils/src/dom/global';
@@ -434,7 +432,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 
 				setTimeout( () => {
 					editor.model.enqueueChange( 'transparent', writer => {
-						writer.insertText( characters[ i ], new ModelPosition( rootEl, [ 0, i ] ) );
+						writer.insertText( characters[ i ], writer.createPositionFromPath( rootEl, [ 0, i ] ) );
 					} );
 				}, i * 5 );
 			}
@@ -476,7 +474,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			pasteHtml( editor, 'https://www.youtube.com/watch?v=H08tGjXNHO4' );
 
 			editor.model.enqueueChange( 'transparent', writer => {
-				writer.remove( ModelRange.createOn( editor.model.document.getRoot().getChild( 1 ) ) );
+				writer.remove( writer.createRangeOn( editor.model.document.getRoot().getChild( 1 ) ) );
 			} );
 
 			setTimeout( () => {
@@ -495,7 +493,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 
 			editor.model.enqueueChange( 'transparent', writer => {
 				const paragraph = writer.createElement( 'paragraph' );
-				writer.insert( paragraph, ModelPosition.createAfter( editor.model.document.getRoot().getChild( 0 ) ) );
+				writer.insert( paragraph, writer.createPositionAfter( editor.model.document.getRoot().getChild( 0 ) ) );
 				writer.setSelection( paragraph, 'in' );
 			} );
 
@@ -526,7 +524,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 
 			editor.model.enqueueChange( 'transparent', writer => {
 				const paragraph = writer.createElement( 'paragraph' );
-				writer.insert( paragraph, ModelPosition.createAfter( editor.model.document.getRoot().getChild( 1 ) ) );
+				writer.insert( paragraph, writer.createPositionAfter( editor.model.document.getRoot().getChild( 1 ) ) );
 				writer.setSelection( paragraph, 'in' );
 			} );