Explorar el Código

Merge branch 'master' into t/ckeditor5-engine/1555

# Conflicts:
#	tests/automediaembed.js
Maciej Gołaszewski hace 7 años
padre
commit
ea31553879

+ 1 - 1
packages/ckeditor5-media-embed/docs/_snippets/features/media-embed.js

@@ -14,7 +14,7 @@ ClassicEditor
 			items: [
 				'mediaEmbed', '|', 'heading', '|', 'bold', 'italic', '|', 'undo', 'redo'
 			],
-			viewportTopOffset: 60
+			viewportTopOffset: 100
 		}
 	} )
 	.then( editor => {

+ 1 - 0
packages/ckeditor5-media-embed/package.json

@@ -14,6 +14,7 @@
     "@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-undo": "^10.0.3",

+ 8 - 1
packages/ckeditor5-media-embed/src/automediaembed.js

@@ -136,6 +136,13 @@ export default class AutoMediaEmbed extends Plugin {
 			return;
 		}
 
+		const mediaEmbedCommand = editor.commands.get( 'mediaEmbed' );
+
+		// Do not anything if media element cannot be inserted at the current position (#47).
+		if ( !mediaEmbedCommand.isEnabled ) {
+			return;
+		}
+
 		// Position won't be available in the `setTimeout` function so let's clone it.
 		this._positionToInsert = LivePosition.fromPosition( leftPosition );
 
@@ -151,7 +158,7 @@ export default class AutoMediaEmbed extends Plugin {
 					writer.setSelection( this._positionToInsert );
 				}
 
-				editor.commands.execute( 'mediaEmbed', url );
+				mediaEmbedCommand.execute( url );
 
 				this._positionToInsert.detach();
 				this._positionToInsert = null;

+ 15 - 2
packages/ckeditor5-media-embed/tests/automediaembed.js

@@ -15,7 +15,8 @@ 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 Image from '@ckeditor/ckeditor5-image/src/image';
+import ImageCaption from '@ckeditor/ckeditor5-image/src/imagecaption';
 import global from '@ckeditor/ckeditor5-utils/src/dom/global';
 import { getData, setData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
 
@@ -28,7 +29,7 @@ describe( 'AutoMediaEmbed - integration', () => {
 
 		return ClassicTestEditor
 			.create( editorElement, {
-				plugins: [ MediaEmbed, AutoMediaEmbed, Link, List, Bold, Typing ]
+				plugins: [ MediaEmbed, AutoMediaEmbed, Link, List, Bold, Typing, Image, ImageCaption ]
 			} )
 			.then( newEditor => {
 				editor = newEditor;
@@ -301,6 +302,18 @@ describe( 'AutoMediaEmbed - integration', () => {
 			);
 		} );
 
+		// #47
+		it( 'does not transform a valid URL into a media if the element cannot be placed in the current position', () => {
+			setData( editor.model, '<image src="foo.png"><caption>Foo.[]</caption></image>' );
+			pasteHtml( editor, 'https://www.youtube.com/watch?v=H08tGjXNHO4' );
+
+			clock.tick( 100 );
+
+			expect( getData( editor.model ) ).to.equal(
+				'<image src="foo.png"><caption>Foo.https://www.youtube.com/watch?v=H08tGjXNHO4[]</caption></image>'
+			);
+		} );
+
 		it( 'replaces a URL in media if pasted a link when other media element was selected', () => {
 			setData(
 				editor.model,