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

Updated downcast conversion to changes in the view.

Szymon Kupś 8 лет назад
Родитель
Сommit
c99842ae55

+ 5 - 4
packages/ckeditor5-list/src/converters.js

@@ -11,7 +11,6 @@ import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
 import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
 import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
 import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
 import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
 
 
-import ViewContainerElement from '@ckeditor/ckeditor5-engine/src/view/containerelement';
 import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
 import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
 import ViewRange from '@ckeditor/ckeditor5-engine/src/view/range';
 import ViewRange from '@ckeditor/ckeditor5-engine/src/view/range';
 import ViewTreeWalker from '@ckeditor/ckeditor5-engine/src/view/treewalker';
 import ViewTreeWalker from '@ckeditor/ckeditor5-engine/src/view/treewalker';
@@ -42,7 +41,7 @@ export function modelViewInsertion( evt, data, consumable, conversionApi ) {
 	consumable.consume( data.item, 'attribute:indent' );
 	consumable.consume( data.item, 'attribute:indent' );
 
 
 	const modelItem = data.item;
 	const modelItem = data.item;
-	const viewItem = generateLiInUl( modelItem, conversionApi.mapper );
+	const viewItem = generateLiInUl( modelItem, conversionApi );
 
 
 	injectViewList( modelItem, viewItem, conversionApi );
 	injectViewList( modelItem, viewItem, conversionApi );
 }
 }
@@ -804,11 +803,13 @@ export function modelIndentPasteFixer( evt, [ content, selection ] ) {
 // Helper function that creates a `<ul><li></li></ul>` or (`<ol>`) structure out of given `modelItem` model `listItem` element.
 // Helper function that creates a `<ul><li></li></ul>` or (`<ol>`) structure out of given `modelItem` model `listItem` element.
 // Then, it binds created view list item (<li>) with model `listItem` element.
 // Then, it binds created view list item (<li>) with model `listItem` element.
 // The function then returns created view list item (<li>).
 // The function then returns created view list item (<li>).
-function generateLiInUl( modelItem, mapper ) {
+function generateLiInUl( modelItem, conversionApi ) {
+	const mapper = conversionApi.mapper;
+	const viewWriter = conversionApi.writer;
 	const listType = modelItem.getAttribute( 'type' ) == 'numbered' ? 'ol' : 'ul';
 	const listType = modelItem.getAttribute( 'type' ) == 'numbered' ? 'ol' : 'ul';
 	const viewItem = createViewListItemElement();
 	const viewItem = createViewListItemElement();
 
 
-	const viewList = new ViewContainerElement( listType, null );
+	const viewList = viewWriter.createContainerElement( listType, null );
 	viewList.appendChildren( viewItem );
 	viewList.appendChildren( viewItem );
 
 
 	mapper.bindElements( modelItem, viewItem );
 	mapper.bindElements( modelItem, viewItem );

+ 23 - 23
packages/ckeditor5-list/tests/list.js

@@ -53,10 +53,10 @@ describe( 'List', () => {
 		sinon.spy( editor, 'execute' );
 		sinon.spy( editor, 'execute' );
 
 
 		bulletedListButton.fire( 'execute' );
 		bulletedListButton.fire( 'execute' );
-		expect( editor.execute.calledWithExactly( 'bulletedList' ) );
+		sinon.assert.calledWithExactly( editor.execute, 'bulletedList' );
 
 
 		numberedListButton.fire( 'execute' );
 		numberedListButton.fire( 'execute' );
-		expect( editor.execute.calledWithExactly( 'numberedList' ) );
+		sinon.assert.calledWithExactly( editor.execute, 'numberedList' );
 	} );
 	} );
 
 
 	it( 'should bind bulleted list button model to bulledList command', () => {
 	it( 'should bind bulleted list button model to bulledList command', () => {
@@ -100,8 +100,8 @@ describe( 'List', () => {
 
 
 			editor.editing.view.document.fire( 'enter', domEvtDataStub );
 			editor.editing.view.document.fire( 'enter', domEvtDataStub );
 
 
-			expect( editor.execute.calledOnce ).to.be.true;
-			expect( editor.execute.calledWithExactly( 'outdentList' ) );
+			sinon.assert.calledOnce( editor.execute );
+			sinon.assert.calledWithExactly( editor.execute, 'outdentList' );
 		} );
 		} );
 
 
 		it( 'should not execute outdentList command on enter key in non-empty list', () => {
 		it( 'should not execute outdentList command on enter key in non-empty list', () => {
@@ -113,7 +113,7 @@ describe( 'List', () => {
 
 
 			editor.editing.view.document.fire( 'enter', domEvtDataStub );
 			editor.editing.view.document.fire( 'enter', domEvtDataStub );
 
 
-			expect( editor.execute.called ).to.be.false;
+			sinon.assert.notCalled( editor.execute );
 		} );
 		} );
 	} );
 	} );
 
 
@@ -125,9 +125,9 @@ describe( 'List', () => {
 
 
 			setData( model, '<listItem type="bulleted" indent="0">[]foo</listItem>' );
 			setData( model, '<listItem type="bulleted" indent="0">[]foo</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
-			expect( editor.execute.calledWithExactly( 'outdentList' ) );
+			sinon.assert.calledWithExactly( editor.execute, 'outdentList' );
 		} );
 		} );
 
 
 		it( 'should execute outdentList command on backspace key in first item of list', () => {
 		it( 'should execute outdentList command on backspace key in first item of list', () => {
@@ -137,9 +137,9 @@ describe( 'List', () => {
 
 
 			setData( model, '<paragraph>foo</paragraph><listItem type="bulleted" indent="0">[]foo</listItem>' );
 			setData( model, '<paragraph>foo</paragraph><listItem type="bulleted" indent="0">[]foo</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
-			expect( editor.execute.calledWithExactly( 'outdentList' ) );
+			sinon.assert.calledWithExactly( editor.execute, 'outdentList' );
 		} );
 		} );
 
 
 		it( 'should not execute outdentList command on delete key in first item of list', () => {
 		it( 'should not execute outdentList command on delete key in first item of list', () => {
@@ -149,7 +149,7 @@ describe( 'List', () => {
 
 
 			setData( model, '<listItem type="bulleted" indent="0">[]foo</listItem>' );
 			setData( model, '<listItem type="bulleted" indent="0">[]foo</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
 			sinon.assert.notCalled( editor.execute );
 			sinon.assert.notCalled( editor.execute );
 		} );
 		} );
@@ -161,7 +161,7 @@ describe( 'List', () => {
 
 
 			setData( model, '<listItem type="bulleted" indent="0">[fo]o</listItem>' );
 			setData( model, '<listItem type="bulleted" indent="0">[fo]o</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
 			sinon.assert.notCalled( editor.execute );
 			sinon.assert.notCalled( editor.execute );
 		} );
 		} );
@@ -173,7 +173,7 @@ describe( 'List', () => {
 
 
 			setData( model, '<paragraph>[]foo</paragraph>' );
 			setData( model, '<paragraph>[]foo</paragraph>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
 			sinon.assert.notCalled( editor.execute );
 			sinon.assert.notCalled( editor.execute );
 		} );
 		} );
@@ -185,7 +185,7 @@ describe( 'List', () => {
 
 
 			setData( model, '<listItem type="bulleted" indent="0">foo</listItem><listItem type="bulleted" indent="0">[]foo</listItem>' );
 			setData( model, '<listItem type="bulleted" indent="0">foo</listItem><listItem type="bulleted" indent="0">[]foo</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
 			sinon.assert.notCalled( editor.execute );
 			sinon.assert.notCalled( editor.execute );
 		} );
 		} );
@@ -197,7 +197,7 @@ describe( 'List', () => {
 
 
 			setData( model, '<listItem type="bulleted" indent="0">fo[]o</listItem>' );
 			setData( model, '<listItem type="bulleted" indent="0">fo[]o</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
 			sinon.assert.notCalled( editor.execute );
 			sinon.assert.notCalled( editor.execute );
 		} );
 		} );
@@ -209,7 +209,7 @@ describe( 'List', () => {
 
 
 			setData( model, '<listItem type="bulleted" indent="0">fo[]o</listItem>' );
 			setData( model, '<listItem type="bulleted" indent="0">fo[]o</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
 			sinon.assert.notCalled( editor.execute );
 			sinon.assert.notCalled( editor.execute );
 		} );
 		} );
@@ -221,9 +221,9 @@ describe( 'List', () => {
 
 
 			setData( model, '<blockQuote><paragraph>x</paragraph></blockQuote><listItem type="bulleted" indent="0">[]foo</listItem>' );
 			setData( model, '<blockQuote><paragraph>x</paragraph></blockQuote><listItem type="bulleted" indent="0">[]foo</listItem>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
-			expect( editor.execute.calledWithExactly( 'outdentList' ) );
+			sinon.assert.calledWithExactly( editor.execute, 'outdentList' );
 		} );
 		} );
 
 
 		it( 'should outdent list when list is nested in block quote', () => {
 		it( 'should outdent list when list is nested in block quote', () => {
@@ -233,9 +233,9 @@ describe( 'List', () => {
 
 
 			setData( model, '<paragraph>x</paragraph><blockQuote><listItem type="bulleted" indent="0">[]foo</listItem></blockQuote>' );
 			setData( model, '<paragraph>x</paragraph><blockQuote><listItem type="bulleted" indent="0">[]foo</listItem></blockQuote>' );
 
 
-			editor.editing.view.fire( 'delete', domEvtDataStub );
+			editor.editing.view.document.fire( 'delete', domEvtDataStub );
 
 
-			expect( editor.execute.calledWithExactly( 'outdentList' ) );
+			sinon.assert.calledWithExactly( editor.execute, 'outdentList' );
 		} );
 		} );
 	} );
 	} );
 
 
@@ -265,8 +265,8 @@ describe( 'List', () => {
 
 
 			editor.editing.view.document.fire( 'keydown', domEvtDataStub );
 			editor.editing.view.document.fire( 'keydown', domEvtDataStub );
 
 
-			expect( editor.execute.calledOnce ).to.be.true;
-			expect( editor.execute.calledWithExactly( 'indentList' ) ).to.be.true;
+			sinon.assert.calledOnce( editor.execute );
+			sinon.assert.calledWithExactly( editor.execute, 'indentList' );
 			sinon.assert.calledOnce( domEvtDataStub.preventDefault );
 			sinon.assert.calledOnce( domEvtDataStub.preventDefault );
 			sinon.assert.calledOnce( domEvtDataStub.stopPropagation );
 			sinon.assert.calledOnce( domEvtDataStub.stopPropagation );
 		} );
 		} );
@@ -282,8 +282,8 @@ describe( 'List', () => {
 
 
 			editor.editing.view.document.fire( 'keydown', domEvtDataStub );
 			editor.editing.view.document.fire( 'keydown', domEvtDataStub );
 
 
-			expect( editor.execute.calledOnce ).to.be.true;
-			expect( editor.execute.calledWithExactly( 'outdentList' ) ).to.be.true;
+			sinon.assert.calledOnce( editor.execute );
+			sinon.assert.calledWithExactly( editor.execute, 'outdentList' );
 			sinon.assert.calledOnce( domEvtDataStub.preventDefault );
 			sinon.assert.calledOnce( domEvtDataStub.preventDefault );
 			sinon.assert.calledOnce( domEvtDataStub.stopPropagation );
 			sinon.assert.calledOnce( domEvtDataStub.stopPropagation );
 		} );
 		} );

+ 1 - 2
packages/ckeditor5-list/tests/listengine.js

@@ -12,7 +12,6 @@ import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
 import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
 import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
 import ModelText from '@ckeditor/ckeditor5-engine/src/model/text';
 import ModelText from '@ckeditor/ckeditor5-engine/src/model/text';
 import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
 import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
-import ViewContainerElement from '@ckeditor/ckeditor5-engine/src/view/containerelement';
 import ViewUIElement from '@ckeditor/ckeditor5-engine/src/view/uielement';
 import ViewUIElement from '@ckeditor/ckeditor5-engine/src/view/uielement';
 
 
 import BoldEngine from '@ckeditor/ckeditor5-basic-styles/src/boldengine';
 import BoldEngine from '@ckeditor/ckeditor5-basic-styles/src/boldengine';
@@ -3302,7 +3301,7 @@ describe( 'ListEngine', () => {
 				consumable.consume( data.item, 'attribute:type' );
 				consumable.consume( data.item, 'attribute:type' );
 				consumable.consume( data.item, 'attribute:indent' );
 				consumable.consume( data.item, 'attribute:indent' );
 
 
-				const converter = insertElement( new ViewContainerElement( 'p' ) );
+				const converter = insertElement( ( item, consumable, api ) => api.writer.createContainerElement( 'p' ) );
 
 
 				return converter( evt, data, consumable, conversionApi );
 				return converter( evt, data, consumable, conversionApi );
 			}, { priority: 'highest' } );
 			}, { priority: 'highest' } );