8
0
Просмотр исходного кода

Merge branch t/engine/1172

Internal: Update API usage after merge t/1172 on engine.
Piotr Jasiun 8 лет назад
Родитель
Сommit
ef6dd6d82b

+ 7 - 33
packages/ckeditor5-alignment/src/alignmentediting.js

@@ -58,12 +58,8 @@ export default class AlignmentEditing extends Plugin {
 		// Allow alignment attribute on all blocks.
 		schema.allow( { name: '$block', attributes: 'alignment' } );
 
-		attributeToStyleConverter(
-			[ data.modelToView, editing.modelToView ],
-			'alignment',
-			attribute => ( { 'text-align': attribute } ),
-			() => [ 'text-align' ]
-		);
+		data.modelToView.on( 'attribute:alignment', convertStyle() );
+		editing.modelToView.on( 'attribute:alignment', convertStyle() );
 
 		// Convert `text-align` style property from element to model attribute alignment.
 		buildViewConverter()
@@ -122,41 +118,19 @@ export function isSupported( style ) {
 	return AlignmentEditing.supportedStyles.includes( style );
 }
 
-// Defines attribute to style converters.
-// @private
-function attributeToStyleConverter( dispatchers, modelAttributeName, setStyleFn, removeStyleFn ) {
-	for ( const dispatcher of dispatchers ) {
-		dispatcher.on( `addAttribute:${ modelAttributeName }`, setStyle( setStyleFn ) );
-		dispatcher.on( `changeAttribute:${ modelAttributeName }`, setStyle( setStyleFn ) );
-		dispatcher.on( `removeAttribute:${ modelAttributeName }`, removeStyle( removeStyleFn ) );
-	}
-}
-
 // Dispatcher handler responsible for setting style to a view element.
 // @private
-function setStyle( setStyleFn ) {
+function convertStyle() {
 	return ( evt, data, consumable, conversionApi ) => {
 		if ( !consumable.consume( data.item, eventNameToConsumableType( evt.name ) ) ) {
 			return;
 		}
 
-		const styles = setStyleFn( data.attributeNewValue );
-
-		conversionApi.mapper.toViewElement( data.item ).setStyle( styles );
-	};
-}
-
-// Dispatcher handler responsible for removing style attributes from a view element.
-// @private
-function removeStyle( removeStyleFn ) {
-	return ( evt, data, consumable, conversionApi ) => {
-		if ( !consumable.consume( data.item, eventNameToConsumableType( evt.name ) ) ) {
-			return;
+		if ( data.attributeNewValue ) { // Set style.
+			conversionApi.mapper.toViewElement( data.item ).setStyle( { 'text-align': data.attributeNewValue } );
+		} else { // Remove style.
+			conversionApi.mapper.toViewElement( data.item ).removeStyle( 'text-align' );
 		}
-
-		const styles = removeStyleFn();
-		const viewElement = conversionApi.mapper.toViewElement( data.item );
-		viewElement.removeStyle( ...styles );
 	};
 }
 

+ 3 - 15
packages/ckeditor5-alignment/tests/alignmentediting.js

@@ -224,19 +224,7 @@ describe( 'AlignmentEditing', () => {
 } );
 
 function blockDefaultConversion( dispatcher ) {
-	dispatcher.on(
-		'addAttribute:alignment',
-		( evt, data, consumable ) => consumable.consume( data.item, eventNameToConsumableType( evt.name ) ),
-		{ 'priority': 'high' }
-	);
-	dispatcher.on(
-		'changeAttribute:alignment',
-		( evt, data, consumable ) => consumable.consume( data.item, eventNameToConsumableType( evt.name ) ),
-		{ 'priority': 'high' }
-	);
-	dispatcher.on(
-		'removeAttribute:alignment',
-		( evt, data, consumable ) => consumable.consume( data.item, eventNameToConsumableType( evt.name ) ),
-		{ 'priority': 'high' }
-	);
+	dispatcher.on( 'attribute:alignment', ( evt, data, consumable ) => {
+		consumable.consume( data.item, eventNameToConsumableType( evt.name ) );
+	}, { 'priority': 'high' } );
 }