Selaa lähdekoodia

Refactored uses of EmitterMixin.

Oskar Wrobel 9 vuotta sitten
vanhempi
commit
a478937ad2

+ 10 - 8
packages/ckeditor5-engine/src/conversion/buildmodelconverter.js

@@ -193,16 +193,16 @@ class ModelConverterBuilder {
 				// From model element to view element -> insert element.
 				element = typeof element == 'string' ? new ViewContainerElement( element ) : element;
 
-				dispatcher.on( 'insert:' + this._from.name, insertElement( element ), priority );
+				dispatcher.on( 'insert:' + this._from.name, insertElement( element ), { priority } );
 			} else {
 				// From model attribute to view element -> wrap and unwrap.
 				element = typeof element == 'string' ? new ViewAttributeElement( element ) : element;
 
-				dispatcher.on( 'addAttribute:' + this._from.key, wrap( element ), priority );
-				dispatcher.on( 'changeAttribute:' + this._from.key, wrap( element ), priority );
-				dispatcher.on( 'removeAttribute:' + this._from.key, unwrap( element ), priority );
+				dispatcher.on( 'addAttribute:' + this._from.key, wrap( element ), { priority } );
+				dispatcher.on( 'changeAttribute:' + this._from.key, wrap( element ), { priority } );
+				dispatcher.on( 'removeAttribute:' + this._from.key, unwrap( element ), { priority } );
 
-				dispatcher.on( 'selectionAttribute:' + this._from.key, convertSelectionAttribute( element ), priority );
+				dispatcher.on( 'selectionAttribute:' + this._from.key, convertSelectionAttribute( element ), { priority } );
 			}
 		}
 	}
@@ -268,9 +268,11 @@ class ModelConverterBuilder {
 		}
 
 		for ( let dispatcher of this._dispatchers ) {
-			dispatcher.on( 'addAttribute:' + this._from.key, setAttribute( attributeCreator ), this._from.priority || 'normal' );
-			dispatcher.on( 'changeAttribute:' + this._from.key, setAttribute( attributeCreator ), this._from.priority || 'normal' );
-			dispatcher.on( 'removeAttribute:' + this._from.key, removeAttribute( attributeCreator ), this._from.priority || 'normal' );
+			const options = { priority: this._from.priority || 'normal' };
+
+			dispatcher.on( 'addAttribute:' + this._from.key, setAttribute( attributeCreator ), options );
+			dispatcher.on( 'changeAttribute:' + this._from.key, setAttribute( attributeCreator ), options );
+			dispatcher.on( 'removeAttribute:' + this._from.key, removeAttribute( attributeCreator ), options );
 		}
 	}
 }

+ 1 - 1
packages/ckeditor5-engine/src/conversion/buildviewconverter.js

@@ -375,7 +375,7 @@ class ViewConverterBuilder {
 
 			// Add event to each registered dispatcher.
 			for ( let dispatcher of this._dispatchers ) {
-				dispatcher.on( eventName, eventCallback, priority );
+				dispatcher.on( eventName, eventCallback, { priority } );
 			}
 		}
 	}

+ 2 - 2
packages/ckeditor5-engine/src/conversion/mapper.js

@@ -64,7 +64,7 @@ export default class Mapper {
 			let viewContainer = this._modelToViewMapping.get( data.modelPosition.parent );
 
 			data.viewPosition = this._findPositionIn( viewContainer, data.modelPosition.offset );
-		}, 'lowest' );
+		}, { priority: 'lowest' } );
 
 		// Add default callback for view to model position mapping.
 		this.on( 'viewToModelPosition', ( evt, data ) => {
@@ -79,7 +79,7 @@ export default class Mapper {
 			let modelOffset = this._toModelOffset( data.viewPosition.parent, data.viewPosition.offset, viewBlock );
 
 			data.modelPosition = ModelPosition.createFromParentAndOffset( modelParent, modelOffset );
-		}, 'lowest' );
+		}, { priority: 'lowest' } );
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/conversion/modelconversiondispatcher.js

@@ -98,7 +98,7 @@ import extend from '../../utils/lib/lodash/extend.js';
  *			viewWriter.insert( position, viewSourceBtn );
  *
  *			evt.stop();
- *		}, 'high' );
+ *		}, { priority: 'high' } );
  *
  * @memberOf engine.conversion
  */

+ 4 - 4
packages/ckeditor5-engine/src/datacontroller.js

@@ -77,7 +77,7 @@ export default class DataController {
 		this.modelToView = new ModelConversionDispatcher( {
 			mapper: this.mapper
 		} );
-		this.modelToView.on( 'insert:$text', insertText(), 'lowest' );
+		this.modelToView.on( 'insert:$text', insertText(), { priority: 'lowest' } );
 
 		/**
 		 * View to model conversion dispatcher used by the {@link engine.DataController#set set method}.
@@ -101,9 +101,9 @@ export default class DataController {
 		// Note that if there is no default converter for the element it will be skipped, for instance `<b>foo</b>` will be
 		// converted to nothing. We add `convertToModelFragment` as a last converter so it converts children of that
 		// element to the document fragment so `<b>foo</b>` will be converted to `foo` if there is no converter for `<b>`.
-		this.viewToModel.on( 'text', convertText(), 'lowest' );
-		this.viewToModel.on( 'element', convertToModelFragment(), 'lowest' );
-		this.viewToModel.on( 'documentFragment', convertToModelFragment(), 'lowest' );
+		this.viewToModel.on( 'text', convertText(), { priority: 'lowest' } );
+		this.viewToModel.on( 'element', convertToModelFragment(), { priority: 'lowest' } );
+		this.viewToModel.on( 'documentFragment', convertToModelFragment(), { priority: 'lowest' } );
 	}
 
 	/**

+ 9 - 9
packages/ckeditor5-engine/src/editingcontroller.js

@@ -86,27 +86,27 @@ export default class EditingController {
 		// Convert changes in model to view.
 		this._listenter.listenTo( this.model, 'change', ( evt, type, changes ) => {
 			this.modelToView.convertChange( type, changes );
-		}, 'low' );
+		}, { priority: 'low' } );
 
 		// Convert model selection to view.
 		this._listenter.listenTo( this.model, 'changesDone', () => {
 			this.modelToView.convertSelection( model.selection );
 			this.view.render();
-		}, 'low' );
+		}, { priority: 'low' } );
 
 		// Convert view selection to model.
 		this._listenter.listenTo( this.view, 'selectionChange', convertSelectionChange( model, this.mapper ) );
 
 		// Attach default content converters.
-		this.modelToView.on( 'insert:$text', insertText(), 'lowest' );
-		this.modelToView.on( 'remove', remove(), 'low' );
-		this.modelToView.on( 'move', move(), 'low' );
-		this.modelToView.on( 'rename', rename(), 'low' );
+		this.modelToView.on( 'insert:$text', insertText(), { priority: 'lowest' } );
+		this.modelToView.on( 'remove', remove(), { priority: 'low' } );
+		this.modelToView.on( 'move', move(), { priority: 'low' } );
+		this.modelToView.on( 'rename', rename(), { priority: 'low' } );
 
 		// Attach default selection converters.
-		this.modelToView.on( 'selection', clearAttributes(), 'low' );
-		this.modelToView.on( 'selection', convertRangeSelection(), 'low' );
-		this.modelToView.on( 'selection', convertCollapsedSelection(), 'low' );
+		this.modelToView.on( 'selection', clearAttributes(), { priority: 'low' } );
+		this.modelToView.on( 'selection', convertRangeSelection(), { priority: 'low' } );
+		this.modelToView.on( 'selection', convertCollapsedSelection(), { priority: 'low' } );
 	}
 
 	/**

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

@@ -58,7 +58,7 @@ export default class EditableElement extends ContainerElement {
 		// but this does not mean that editable has focus - it will be placed there after rendering.
 		this.listenTo( document, 'render', () => {
 			this.isFocused = document.isFocused && document.selection.editableElement == this;
-		}, 'low' );
+		}, { priority: 'low' } );
 	}
 
 	/**

+ 10 - 10
packages/ckeditor5-engine/tests/conversion/advanced-converters.js

@@ -418,7 +418,7 @@ describe( 'custom attribute handling for given element', () => {
 			}
 
 			evt.stop();
-		}, 'high' );
+		}, { priority: 'high' } );
 
 		const modelChangeLinkAttrQuoteConverter = function( evt, data, consumable, conversionApi ) {
 			let viewKey = data.attributeKey.substr( 4 ).toLowerCase();
@@ -437,8 +437,8 @@ describe( 'custom attribute handling for given element', () => {
 			evt.stop();
 		};
 
-		modelDispatcher.on( 'changeAttribute:linkHref:quote', modelChangeLinkAttrQuoteConverter, 'high' );
-		modelDispatcher.on( 'changeAttribute:linkTitle:quote', modelChangeLinkAttrQuoteConverter, 'high' );
+		modelDispatcher.on( 'changeAttribute:linkHref:quote', modelChangeLinkAttrQuoteConverter, { priority: 'high' } );
+		modelDispatcher.on( 'changeAttribute:linkTitle:quote', modelChangeLinkAttrQuoteConverter, { priority: 'high' } );
 
 		modelDispatcher.on( 'removeAttribute:linkHref:quote', ( evt, data, consumable, conversionApi ) => {
 			consumable.consume( data.item, eventNameToConsumableType( evt.name ) );
@@ -450,8 +450,8 @@ describe( 'custom attribute handling for given element', () => {
 			viewWriter.remove( ViewRange.createFromParentsAndOffsets( viewElement, aIndex, viewElement, aIndex + 1 ) );
 
 			evt.stop();
-		}, 'high' );
-		modelDispatcher.on( 'removeAttribute:linkTitle:quote', modelChangeLinkAttrQuoteConverter, 'high' );
+		}, { priority: 'high' } );
+		modelDispatcher.on( 'removeAttribute:linkTitle:quote', modelChangeLinkAttrQuoteConverter, { priority: 'high' } );
 
 		// QUOTE VIEW TO MODEL CONVERTERS
 		viewDispatcher.on( 'element:blockquote', ( evt, data, consumable, conversionApi ) => {
@@ -654,10 +654,10 @@ it( 'default table view to model converter', () => {
 describe( 'universal converter', () => {
 	beforeEach( () => {
 		// "Universal" converters
-		modelDispatcher.on( 'insert', insertElement( ( data ) => new ViewContainerElement( data.item.name ) ), 'lowest' );
-		modelDispatcher.on( 'addAttribute', setAttribute(), 'lowest' );
-		modelDispatcher.on( 'changeAttribute', setAttribute(), 'lowest' );
-		modelDispatcher.on( 'removeAttribute', removeAttribute(), 'lowest' );
+		modelDispatcher.on( 'insert', insertElement( ( data ) => new ViewContainerElement( data.item.name ) ), { priority: 'lowest' } );
+		modelDispatcher.on( 'addAttribute', setAttribute(), { priority: 'lowest' } );
+		modelDispatcher.on( 'changeAttribute', setAttribute(), { priority: 'lowest' } );
+		modelDispatcher.on( 'removeAttribute', removeAttribute(), { priority: 'lowest' } );
 
 		viewDispatcher.on( 'element', ( evt, data, consumable, conversionApi ) => {
 			if ( consumable.consume( data.input, { name: true } ) ) {
@@ -671,7 +671,7 @@ describe( 'universal converter', () => {
 
 				data.output.appendChildren( conversionApi.convertChildren( data.input, consumable ) );
 			}
-		}, 'lowest' );
+		}, { priority: 'lowest' } );
 
 		// "Real" converters -- added with higher priority. Should overwrite the "universal" converters.
 		modelDispatcher.on( 'insert:image', insertElement( new ViewContainerElement( 'img' ) ) );

+ 6 - 6
packages/ckeditor5-engine/tests/conversion/model-selection-to-view-converters.js

@@ -57,9 +57,9 @@ beforeEach( () => {
 	dispatcher.on( 'addAttribute:bold', wrap( new ViewAttributeElement( 'strong' ) ) );
 
 	// Default selection converters.
-	dispatcher.on( 'selection', clearAttributes(), 'low' );
-	dispatcher.on( 'selection', convertRangeSelection(), 'low' );
-	dispatcher.on( 'selection', convertCollapsedSelection(), 'low' );
+	dispatcher.on( 'selection', clearAttributes(), { priority: 'low' } );
+	dispatcher.on( 'selection', convertRangeSelection(), { priority: 'low' } );
+	dispatcher.on( 'selection', convertCollapsedSelection(), { priority: 'low' } );
 } );
 
 describe( 'default converters', () => {
@@ -147,7 +147,7 @@ describe( 'default converters', () => {
 			// This should prevent default callback doing anything.
 			dispatcher.on( 'selection', ( evt, data, consumable ) => {
 				expect( consumable.consume( data.selection, 'selection' ) ).to.be.true;
-			}, 'high' );
+			}, { priority: 'high' } );
 
 			// Similar test case as the first in this suite.
 			test(
@@ -208,11 +208,11 @@ describe( 'default converters', () => {
 			// This should prevent default callbacks doing anything.
 			dispatcher.on( 'selection', ( evt, data, consumable ) => {
 				expect( consumable.consume( data.selection, 'selection' ) ).to.be.true;
-			}, 'high' );
+			}, { priority: 'high' } );
 
 			dispatcher.on( 'selectionAttribute:bold', ( evt, data, consumable ) => {
 				expect( consumable.consume( data.selection, 'selectionAttribute:bold' ) ).to.be.true;
-			}, 'high' );
+			}, { priority: 'high' } );
 
 			// Similar test case as above
 			test(

+ 3 - 3
packages/ckeditor5-engine/tests/conversion/model-to-view-converters.js

@@ -346,7 +346,7 @@ describe( 'move', () => {
 		dispatcher.on( 'move', move() );
 		dispatcher.on( 'move', ( evt, data, consumable ) => {
 			consumable.consume( data.item, 'move' );
-		}, 'high' );
+		}, { priority: 'high' } );
 
 		dispatcher.convertInsertion( ModelRange.createIn( modelRoot ) );
 
@@ -424,7 +424,7 @@ describe( 'remove', () => {
 		dispatcher.on( 'remove', remove() );
 		dispatcher.on( 'remove', ( evt, data, consumable ) => {
 			consumable.consume( data.item, 'remove' );
-		}, 'high' );
+		}, { priority: 'high' } );
 
 		dispatcher.convertInsertion( ModelRange.createIn( modelRoot ) );
 
@@ -520,7 +520,7 @@ describe( 'rename', () => {
 	it( 'should not execute if converted value was already consumed', () => {
 		dispatcher.on( 'rename', ( evt, data, consumable ) => {
 			consumable.consume( data.element, 'rename' );
-		}, 'high' );
+		}, { priority: 'high' } );
 
 		dispatcher.on( 'rename', ( evt, data ) => {
 			expect( data.fakeElement ).to.be.undefined;

+ 2 - 2
packages/ckeditor5-engine/tests/conversion/view-to-model-converters.js

@@ -43,7 +43,7 @@ describe( 'convertText', () => {
 		const viewText = new ViewText( 'foofuckbafuckr' );
 
 		// Default converter for elements. Returns just converted children. Added with lowest priority.
-		dispatcher.on( 'text', convertText(), 'lowest' );
+		dispatcher.on( 'text', convertText(), { priority: 'lowest' } );
 		// Added with normal priority. Should make the above converter not fire.
 		dispatcher.on( 'text', ( evt, data, consumable ) => {
 			if ( consumable.consume( data.input ) ) {
@@ -110,7 +110,7 @@ describe( 'convertToModelFragment', () => {
 		// To get any meaningful results we have to actually convert something.
 		dispatcher.on( 'text', convertText() );
 		// Default converter for elements. Returns just converted children. Added with lowest priority.
-		dispatcher.on( 'element', convertToModelFragment(), 'lowest' );
+		dispatcher.on( 'element', convertToModelFragment(), { priority: 'lowest' } );
 		// Added with normal priority. Should make the above converter not fire.
 		dispatcher.on( 'element:p', ( evt, data, consumable, conversionApi ) => {
 			if ( consumable.consume( data.input, { name: true } ) ) {