Piotr Jasiun 9 anni fa
parent
commit
878c2b1096

+ 33 - 26
packages/ckeditor5-engine/src/treecontroller/model-to-view-converters.js

@@ -5,6 +5,9 @@
 
 'use strict';
 
+import ViewText from '../treeview/text.js';
+import ModelTreeWalker from './treemodel/treewalker.js';
+
 export function insert( nodeCreator ) {
 	return ( evt, model, context ) => {
 		model.consumable.consume( model.item, 'insert' );
@@ -18,7 +21,7 @@ export function insert( nodeCreator ) {
 		context.writer.insert( viewPosition, viewNode );
 
 		evt.stop();
-	}
+	};
 }
 
 export function insertText() {
@@ -31,16 +34,17 @@ export function insertText() {
 		context.writer.insert( viewPosition, viewNode );
 
 		evt.stop();
-	}
+	};
 }
 
 export function setAttribute( attributesCreator ) {
 	return ( evt, model, context ) => {
 		let attributes;
+
 		if ( !attributesCreator ) {
-			attributes = model.item.getAttribute( model.attributeKey )
+			attributes = model.item.getAttribute( model.attributeKey );
 		} else {
-			attributes = attributesCreator( model )
+			attributes = attributesCreator( model );
 		}
 
 		if ( attributes ) {
@@ -48,26 +52,27 @@ export function setAttribute( attributesCreator ) {
 
 			const viewElement = context.mapper.toViewElement( model.item );
 
-			if ( attributes typeof 'string' || attributes typeof 'number' ) {
+			if ( typeof attributes === 'string' || typeof attributes === 'number' ) {
 				viewElement.setAttribute( model.attributeKey, attributes );
 			} else {
-				for ( var attributeKey in attributes ) {
+				for ( let attributeKey in attributes ) {
 					viewElement.setAttribute( attributeKey, attributes[ attributeKey ] );
 				}
 			}
 
 			evt.stop();
 		}
-	}
+	};
 }
 
 export function removeAttribute( attributesCreator ) {
 	return ( evt, model, context ) => {
 		let attributeKeys;
+
 		if ( !attributesCreator ) {
 			attributeKeys = model.attributeKey;
 		} else {
-			attributeKeys = attributesCreator( model )
+			attributeKeys = attributesCreator( model );
 		}
 
 		if ( attributeKeys ) {
@@ -75,17 +80,17 @@ export function removeAttribute( attributesCreator ) {
 
 			const viewElement = context.mapper.toViewElement( model.item );
 
-			if ( attributeKeys typeof 'string' ) {
+			if ( typeof attributeKeys === 'string' ) {
 				viewElement.removeAttribute( attributeKeys );
 			} else {
-				for ( var attributeKey of attributeKeys ) {
+				for ( let attributeKey of attributeKeys ) {
 					viewElement.removeAttribute( attributeKey );
 				}
 			}
 
 			evt.stop();
 		}
-	}
+	};
 }
 
 export function wrap( nodeCreator ) {
@@ -99,10 +104,10 @@ export function wrap( nodeCreator ) {
 		context.writer.wrap( viewRange, viewNode );
 
 		evt.stop();
-	}
+	};
 }
 
-export function unwrap() {
+export function unwrap( nodeCreator ) {
 	return ( evt, model, context ) => {
 		model.consumable.consume( model.item, eventNameToConsumableType( evt.name ) );
 
@@ -113,45 +118,47 @@ export function unwrap() {
 		context.writer.unwrap( viewRange, viewNode );
 
 		evt.stop();
-	}
+	};
 }
 
 export function move() {
 	return ( evt, model, context ) => {
-		const length = 0;
-		const walker = new TreeWalker( { boundaries: range, shallow: true } );
+		const walker = new ModelTreeWalker( { boundaries: model.range, shallow: true } );
+
+		let length = 0;
 
 		for ( let value of walker ) {
 			length += value.length;
 		}
 
-		const sourceModelRange = Range.createFromPositionAndShift( sourcePosition, length );
+		const sourceModelRange = Range.createFromPositionAndShift( model.sourcePosition, length );
 
-		sourceViewRange = context.mapper.toViewRange( sourceModelRange );
-		targetViewPosition = context.mapper.toViewRange( range.start );
+		const sourceViewRange = context.mapper.toViewRange( sourceModelRange );
+		const targetViewPosition = context.mapper.toViewRange( model.range.start );
 
 		context.writer.move( sourceViewRange, targetViewPosition );
-	}
+	};
 }
 
 export function remove() {
 	return ( evt, model, context ) => {
-		const length = 0;
-		const walker = new TreeWalker( { boundaries: range, shallow: true } );
+		const walker = new ModelTreeWalker( { boundaries: model.range, shallow: true } );
+
+		let length = 0;
 
 		for ( let value of walker ) {
 			length += value.length;
 		}
 
-		const sourceModelRange = Range.createFromPositionAndShift( sourcePosition, length );
-
-		sourceViewRange = context.mapper.toViewRange( sourceModelRange );
+		const sourceModelRange = Range.createFromPositionAndShift( model.sourcePosition, length );
+		const sourceViewRange = context.mapper.toViewRange( sourceModelRange );
 
 		context.writer.remove( sourceViewRange );
-	}
+	};
 }
 
 function eventNameToConsumableType( evtName ) {
 	const parts = evtName.split( ':' );
+
 	return parts[ 0 ] + ':' + parts[ 1 ];
 }

+ 1 - 1
packages/ckeditor5-engine/src/treecontroller/modelconsumable.js

@@ -31,7 +31,7 @@ export default class ModelConsumable {
 	test( item, type ) {
 		const itemConsumables = this.consumable.get( item );
 
-		if ( value === undefined ) {
+		if ( itemConsumables === undefined ) {
 			return null;
 		}
 

+ 4 - 4
packages/ckeditor5-engine/src/treecontroller/modelconversiondispatcher.js

@@ -6,6 +6,7 @@
 'use strict';
 
 import Consumable from './modelconsumable.js';
+import TextFragment from '../treemodel/textfragment.js';
 
 export default class ModelConversionDispatcher {
 	constructor( context ) {
@@ -49,7 +50,7 @@ export default class ModelConversionDispatcher {
 				consumable
 			};
 
-			this._testAndFire( 'insert', model, context );
+			this._testAndFire( 'insert', model, this.context );
 
 			for ( let key of item.getAttributes() ) {
 				model.attributeKey = key;
@@ -91,9 +92,6 @@ export default class ModelConversionDispatcher {
 			}
 		}
 
-		const writer = this.writer;
-		const mapper = this.mapper;
-
 		for ( let value of values ) {
 			const item = value.item;
 			const range = Range.createFromPositionAndShift( value.previousPosition, value.length );
@@ -101,6 +99,8 @@ export default class ModelConversionDispatcher {
 				item: item,
 				range: range,
 				attributeKey: key,
+				attributeOldValue: oldValue,
+				attributeNewValue: newValue,
 				consumable: consumable
 			};