Explorar el Código

Moved widgetize method out of converters.

Szymon Kupś hace 9 años
padre
commit
367c29687b

+ 8 - 39
packages/ckeditor5-image/src/converters.js

@@ -7,7 +7,6 @@ import ViewContainerElement from '../engine/view/containerelement.js';
 import ViewEmptyElement from '../engine/view/emptyelement.js';
 import ViewEmptyElement from '../engine/view/emptyelement.js';
 import ModelElement from '../engine/model/element.js';
 import ModelElement from '../engine/model/element.js';
 
 
-const WIDGET_CLASS_NAME = 'ck-widget';
 const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';
 const WIDGET_SELECTED_CLASS_NAME = 'ck-widget_selected';
 
 
 /**
 /**
@@ -113,48 +112,18 @@ export function viewToModelImage() {
 }
 }
 
 
 /**
 /**
- * Returns function that converts model `image` element to view representation.
- * For data pipeline model image will be converted to:
+ * Converts model `image` element to view representation:
  *
  *
  *		<figure class="image"><img src="..." alt="..."></img></figure>
  *		<figure class="image"><img src="..." alt="..."></img></figure>
  *
  *
- * For editing pipeline image will be "widgetized" and it will be converted to:
- *
- *		<figure class="image ck-widget" contenteditable="false"><img src="..." alt="..."></img></figure>
- *
- * @param {Boolean} [isDataPipeline=false] If true, figure element will not be "widgetized" as conversion is taking place
- * in data pipeline.
- * @returns {Function}
- */
-export function modelToViewImage( isDataPipeline = false ) {
-	return ( data ) => {
-		const modelElement = data.item;
-		const viewImg = new ViewEmptyElement( 'img', {
-			src: modelElement.getAttribute( 'src' ),
-			alt: modelElement.getAttribute( 'alt' )
-		} );
-
-		return isDataPipeline ?
-			new ViewContainerElement( 'figure', { class: 'image' }, viewImg ) :
-			widgetize( new ViewContainerElement( 'figure', { class: 'image' }, viewImg ) );
-	};
-}
-
-/**
- * "Widgetizes" provided {@link engie.view.ContainerElement} by:
- * - changing return value of {@link engine.view.ContainerElement#getFillerOffset} to `null`,
- * - adding `contenteditable="false"` attribute,
- * - adding `ck-widget` class,
- * - setting `element.isWidget` to true.
- *
- * @param {engine.view.ContainerElement} viewContainer
+ * @param {engine.model.Element} modelElement
  * @returns {engine.view.ContainerElement}
  * @returns {engine.view.ContainerElement}
  */
  */
-function widgetize( viewContainer ) {
-	viewContainer.getFillerOffset = () => null;
-	viewContainer.setAttribute( 'contenteditable', false );
-	viewContainer.addClass( WIDGET_CLASS_NAME );
-	viewContainer.isWidget = true;
+export function modelToViewImage( modelElement ) {
+	const viewImg = new ViewEmptyElement( 'img', {
+		src: modelElement.getAttribute( 'src' ),
+		alt: modelElement.getAttribute( 'alt' )
+	} );
 
 
-	return viewContainer;
+	return new ViewContainerElement( 'figure', { class: 'image' }, viewImg );
 }
 }

+ 21 - 2
packages/ckeditor5-image/src/imageengine.js

@@ -11,6 +11,8 @@ import {
 	viewToModelImage
 	viewToModelImage
 } from './converters.js';
 } from './converters.js';
 
 
+const WIDGET_CLASS_NAME = 'ck-widget';
+
 /**
 /**
  * The image engine feature.
  * The image engine feature.
  * Registers `image` as block element in document's schema and allows it to have two attributes: `src` and `alt`.
  * Registers `image` as block element in document's schema and allows it to have two attributes: `src` and `alt`.
@@ -36,12 +38,12 @@ export default class ImageEngine extends Feature {
 		// Build converter from model to view for data pipeline.
 		// Build converter from model to view for data pipeline.
 		buildModelConverter().for( dataPipeline.modelToView )
 		buildModelConverter().for( dataPipeline.modelToView )
 			.fromElement( 'image' )
 			.fromElement( 'image' )
-			.toElement( modelToViewImage( true ) );
+			.toElement( ( data ) => modelToViewImage( data.item ) );
 
 
 		// Build converter from model to view for editing pipeline.
 		// Build converter from model to view for editing pipeline.
 		buildModelConverter().for( editingPipeline.modelToView )
 		buildModelConverter().for( editingPipeline.modelToView )
 			.fromElement( 'image' )
 			.fromElement( 'image' )
-			.toElement( modelToViewImage() );
+			.toElement( ( data ) => widgetize( modelToViewImage( data.item ) ) );
 
 
 		// Converter for figure element from view to model.
 		// Converter for figure element from view to model.
 		dataPipeline.viewToModel.on( 'element:figure', viewToModelImage() );
 		dataPipeline.viewToModel.on( 'element:figure', viewToModelImage() );
@@ -50,3 +52,20 @@ export default class ImageEngine extends Feature {
 		editingPipeline.modelToView.on( 'selection', modelToViewSelection( editor.t ), { priority: 'low' } );
 		editingPipeline.modelToView.on( 'selection', modelToViewSelection( editor.t ), { priority: 'low' } );
 	}
 	}
 }
 }
+
+// "Widgetizes" provided {@link engie.view.ContainerElement} by:
+// - changing return value of {@link engine.view.ContainerElement#getFillerOffset} to `null`,
+// - adding `contenteditable="false"` attribute,
+// - adding `ck-widget` class,
+// - setting `element.isWidget` to true.
+//
+// @param {engine.view.ContainerElement} viewContainer
+// @returns {engine.view.ContainerElement}
+function widgetize( viewContainer ) {
+	viewContainer.getFillerOffset = () => null;
+	viewContainer.setAttribute( 'contenteditable', false );
+	viewContainer.addClass( WIDGET_CLASS_NAME );
+	viewContainer.isWidget = true;
+
+	return viewContainer;
+}