8
0
Prechádzať zdrojové kódy

Merge pull request #34 from ckeditor/t/12

Internal: Media embed should insert media object the same way as other widgets. Closes #12.
Piotr Jasiun 7 rokov pred
rodič
commit
4ff50703c8

+ 4 - 5
packages/ckeditor5-media-embed/src/mediaembedcommand.js

@@ -8,7 +8,7 @@
  */
 
 import Command from '@ckeditor/ckeditor5-core/src/command';
-import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
+import { findOptimalInsertionPosition } from '@ckeditor/ckeditor5-widget/src/utils';
 import { getSelectedMediaElement } from './utils';
 
 /**
@@ -62,14 +62,13 @@ export default class MediaEmbedCommand extends Command {
 				writer.setAttribute( 'url', url, selectedMedia );
 			} );
 		} else {
-			const firstPosition = selection.getFirstPosition();
-			const isRoot = firstPosition.parent === firstPosition.root;
-			const insertPosition = isRoot ? ModelPosition.createAt( firstPosition ) : ModelPosition.createAfter( firstPosition.parent );
+			const insertPosition = findOptimalInsertionPosition( selection );
 
 			model.change( writer => {
 				const mediaElement = writer.createElement( 'media', { url } );
 
-				writer.insert( mediaElement, insertPosition );
+				model.insertContent( mediaElement, insertPosition );
+
 				writer.setSelection( mediaElement, 'on' );
 			} );
 		}

+ 14 - 14
packages/ckeditor5-media-embed/tests/automediaembed.js

@@ -76,7 +76,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -104,7 +104,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -115,7 +115,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="https://youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="https://youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -126,7 +126,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="http://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="http://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -137,7 +137,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="http://youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="http://youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -148,7 +148,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -159,7 +159,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -170,7 +170,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="https://twitter.com/ckeditor/status/1035181110140063749"></media>]'
+				'[<media url="https://twitter.com/ckeditor/status/1035181110140063749"></media>]'
 			);
 		} );
 
@@ -181,7 +181,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -192,7 +192,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -203,7 +203,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph></paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
 			);
 		} );
 
@@ -214,7 +214,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 			clock.tick( 100 );
 
 			expect( getData( editor.model ) ).to.equal(
-				'<paragraph>For</paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+				'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]<paragraph>For</paragraph>'
 			);
 		} );
 
@@ -393,7 +393,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 
 			setTimeout( () => {
 				expect( getData( editor.model ) ).to.equal(
-					'<paragraph>ABCDEFGHIJ</paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+					'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]<paragraph>ABCDEFGHIJ</paragraph>'
 				);
 
 				done();
@@ -415,7 +415,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 
 			setTimeout( () => {
 				expect( getData( editor.model ) ).to.equal(
-					'<paragraph>ABCDEFGHIJ</paragraph>[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]'
+					'[<media url="https://www.youtube.com/watch?v=H08tGjXNHO4"></media>]<paragraph>ABCDEFGHIJ</paragraph>'
 				);
 
 				done();