Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

Commit

Permalink
Remove Position, Range, Selection imports from engine/model.
Browse files Browse the repository at this point in the history
  • Loading branch information
jodator committed Oct 8, 2018
1 parent a34821a commit 45ed060
Show file tree
Hide file tree
Showing 11 changed files with 38 additions and 49 deletions.
3 changes: 1 addition & 2 deletions src/image/converters.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
* @module image/image/converters
*/

import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
import first from '@ckeditor/ckeditor5-utils/src/first';

/**
Expand Down Expand Up @@ -55,7 +54,7 @@ export function viewFigureToModel() {
}

// Convert rest of the figure element's children as an image children.
conversionApi.convertChildren( data.viewItem, ModelPosition.createAt( modelImage, 0 ) );
conversionApi.convertChildren( data.viewItem, conversionApi.writer.createPositionAt( modelImage, 0 ) );

// Set image range as conversion result.
data.modelRange = conversionResult.modelRange;
Expand Down
6 changes: 2 additions & 4 deletions src/image/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
*/

import { toWidget, isWidget } from '@ckeditor/ckeditor5-widget/src/utils';
import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';

const imageSymbol = Symbol( 'isImage' );

Expand Down Expand Up @@ -58,12 +57,11 @@ export function isImageWidgetSelected( selection ) {
}

/**
* Checks if the provided model element is an instance of {@link module:engine/model/element~Element Element} and its name
* is `image`.
* Checks if the provided model element is an `image`.
*
* @param {module:engine/model/element~Element} modelElement
* @returns {Boolean}
*/
export function isImage( modelElement ) {
return modelElement instanceof ModelElement && modelElement.name == 'image';
return !!modelElement && modelElement.is( 'image' );
}
3 changes: 1 addition & 2 deletions src/imagecaption/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
* @module image/imagecaption/utils
*/

import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
import { attachPlaceholder } from '@ckeditor/ckeditor5-engine/src/view/placeholder';
import { toWidgetEditable } from '@ckeditor/ckeditor5-widget/src/utils';

Expand Down Expand Up @@ -48,7 +47,7 @@ export function isCaption( viewElement ) {
*/
export function getCaptionFromImage( imageModelElement ) {
for ( const node of imageModelElement.getChildren() ) {
if ( node instanceof ModelElement && node.name == 'caption' ) {
if ( !!node && node.is( 'caption' ) ) {
return node;
}
}
Expand Down
17 changes: 9 additions & 8 deletions src/imageupload/imageuploadcommand.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export default class ImageUploadCommand extends Command {
const selection = model.document.selection;
const schema = model.schema;

this.isEnabled = isImageAllowedInParent( selection, schema ) && checkSelectionWithObject( selection, schema );
this.isEnabled = isImageAllowedInParent( selection, schema, model ) && checkSelectionWithObject( selection, schema );
}

/**
Expand Down Expand Up @@ -54,7 +54,8 @@ export default class ImageUploadCommand extends Command {
// @param {module:core/editor/editor~Editor} editor
// @param {File} file
function uploadImage( writer, editor, file ) {
const doc = editor.model.document;
const model = editor.model;
const doc = model.document;
const fileRepository = editor.plugins.get( FileRepository );

const loader = fileRepository.createLoader( file );
Expand All @@ -66,9 +67,9 @@ function uploadImage( writer, editor, file ) {

const imageElement = writer.createElement( 'image', { uploadId: loader.id } );

const insertAtSelection = findOptimalInsertionPosition( doc.selection );
const insertAtSelection = findOptimalInsertionPosition( doc.selection, model );

editor.model.insertContent( imageElement, insertAtSelection );
model.insertContent( imageElement, insertAtSelection );

// Inserting an image might've failed due to schema regulations.
if ( imageElement.parent ) {
Expand All @@ -77,8 +78,8 @@ function uploadImage( writer, editor, file ) {
}

// Checks if image is allowed by schema in optimal insertion parent.
function isImageAllowedInParent( selection, schema ) {
const parent = getInsertImageParent( selection );
function isImageAllowedInParent( selection, schema, model ) {
const parent = getInsertImageParent( selection, model );

return schema.checkChild( parent, 'image' );
}
Expand All @@ -96,8 +97,8 @@ function checkSelectionWithObject( selection, schema ) {
}

// Returns a node that will be used to insert image with `model.insertContent` to check if image can be placed there.
function getInsertImageParent( selection ) {
const insertAt = findOptimalInsertionPosition( selection );
function getInsertImageParent( selection, model ) {
const insertAt = findOptimalInsertionPosition( selection, model );

let parent = insertAt.parent;

Expand Down
10 changes: 4 additions & 6 deletions src/imageupload/imageuploadediting.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository';
import ImageUploadCommand from '../../src/imageupload/imageuploadcommand';
import Notification from '@ckeditor/ckeditor5-ui/src/notification/notification';
import ModelSelection from '@ckeditor/ckeditor5-engine/src/model/selection';

import ImageUploadCommand from '../../src/imageupload/imageuploadcommand';
import { isImageType } from '../../src/imageupload/utils';

/**
Expand Down Expand Up @@ -57,13 +57,11 @@ export default class ImageUploadEditing extends Plugin {

const images = Array.from( data.dataTransfer.files ).filter( isImageType );

const targetModelSelection = new ModelSelection(
data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) )
);
const ranges = data.targetRanges.map( viewRange => editor.editing.mapper.toModelRange( viewRange ) );

editor.model.change( writer => {
// Set selection to paste target.
writer.setSelection( targetModelSelection );
writer.setSelection( ranges );

if ( images.length ) {
evt.stop();
Expand Down
3 changes: 1 addition & 2 deletions tests/image.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import Widget from '@ckeditor/ckeditor5-widget/src/widget';
import ImageTextAlternative from '../src/imagetextalternative';
import { setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
import { getData as getViewData } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
import global from '@ckeditor/ckeditor5-utils/src/dom/global';
import env from '@ckeditor/ckeditor5-utils/src/env';
import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils';
Expand Down Expand Up @@ -106,7 +105,7 @@ describe( 'Image', () => {

model.change( writer => {
const secondImage = document.getRoot().getChild( 1 );
writer.setSelection( ModelRange.createOn( secondImage ) );
writer.setSelection( writer.createRangeOn( secondImage ) );
} );

expect( getViewData( view ) ).to.equal(
Expand Down
3 changes: 1 addition & 2 deletions tests/image/converters.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import VirtualTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/virtualtest
import { downcastElementToElement } from '@ckeditor/ckeditor5-engine/src/conversion/downcast-converters';
import { upcastElementToElement } from '@ckeditor/ckeditor5-engine/src/conversion/upcast-converters';

import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';
import { getData as getViewData } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
import { setData as setModelData, getData as getModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
import env from '@ckeditor/ckeditor5-utils/src/env';
Expand Down Expand Up @@ -178,7 +177,7 @@ describe( 'Image converters', () => {
}
} );
conversionApi.writer.insert( element, data.modelCursor );
data.modelRange = ModelRange.createOn( element );
data.modelRange = conversionApi.writer.createRangeOn( element );
data.modelCursor = data.modelRange.end;
}, { priority: 'high' } );

Expand Down
26 changes: 13 additions & 13 deletions tests/imagecaption/imagecaptionediting.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';

import ViewAttributeElement from '@ckeditor/ckeditor5-engine/src/view/attributeelement';
import ViewPosition from '@ckeditor/ckeditor5-engine/src/view/position';
import ModelElement from '@ckeditor/ckeditor5-engine/src/model/element';
import ModelRange from '@ckeditor/ckeditor5-engine/src/model/range';

import { getData as getModelData, setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
import { getData as getViewData } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
Expand Down Expand Up @@ -200,7 +198,7 @@ describe( 'ImageCaptionEditing', () => {
const caption = image.getChild( 0 );

model.change( writer => {
writer.remove( ModelRange.createIn( caption ) );
writer.remove( writer.createRangeIn( caption ) );
} );

expect( getViewData( view ) ).to.equal(
Expand All @@ -221,7 +219,7 @@ describe( 'ImageCaptionEditing', () => {
const caption = image.getChild( 0 );

model.change( writer => {
writer.remove( ModelRange.createFromParentsAndOffsets( caption, 0, caption, 8 ) );
writer.remove( writer.createRange( writer.createPositionAt( caption, 0 ), writer.createPositionAt( caption, 8 ) ) );
} );

expect( getViewData( view ) ).to.equal(
Expand Down Expand Up @@ -258,10 +256,12 @@ describe( 'ImageCaptionEditing', () => {
} );

it( 'should not add caption element if image already have it', () => {
const caption = new ModelElement( 'caption', null, 'foo bar' );
const image = new ModelElement( 'image', { src: '', alt: '' }, caption );

model.change( writer => {
const caption = writer.createElement( 'caption' );
const image = writer.createElement( 'image', { src: '', alt: '' } );

writer.insertText( 'foo bar', caption );
writer.insert( caption, image );
writer.insert( image, doc.getRoot() );
} );

Expand All @@ -282,10 +282,10 @@ describe( 'ImageCaptionEditing', () => {
} );

it( 'should not add caption element twice', () => {
const image = new ModelElement( 'image', { src: '', alt: '' } );
const caption = new ModelElement( 'caption' );

model.change( writer => {
const image = writer.createElement( 'image', { src: '', alt: '' } );
const caption = writer.createElement( 'caption' );

// Since we are adding an empty image, this should trigger caption fixer.
writer.insert( image, doc.getRoot() );

Expand Down Expand Up @@ -407,7 +407,7 @@ describe( 'ImageCaptionEditing', () => {

model.change( writer => {
writer.remove( doc.selection.getFirstRange() );
writer.setSelection( ModelRange.createOn( image ) );
writer.setSelection( writer.createRangeOn( image ) );
} );

expect( getViewData( view ) ).to.equal(
Expand All @@ -424,7 +424,7 @@ describe( 'ImageCaptionEditing', () => {
const image = doc.getRoot().getChild( 1 );

model.change( writer => {
writer.setSelection( ModelRange.createOn( image ) );
writer.setSelection( writer.createRangeOn( image ) );
} );

expect( getViewData( view ) ).to.equal(
Expand All @@ -451,7 +451,7 @@ describe( 'ImageCaptionEditing', () => {

// Remove text and selection from caption.
model.change( writer => {
writer.remove( ModelRange.createIn( modelCaption ) );
writer.remove( writer.createRangeIn( modelCaption ) );
writer.setSelection( null );
} );

Expand Down
5 changes: 2 additions & 3 deletions tests/imagetoolbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import global from '@ckeditor/ckeditor5-utils/src/dom/global';
import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
import ButtonView from '@ckeditor/ckeditor5-ui/src/button/buttonview';
import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
import Range from '@ckeditor/ckeditor5-engine/src/model/range';
import View from '@ckeditor/ckeditor5-ui/src/view';
import { setData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
import env from '@ckeditor/ckeditor5-utils/src/env';
Expand Down Expand Up @@ -135,7 +134,7 @@ describe( 'ImageToolbar', () => {
model.change( writer => {
// Select the [<image></image>]
writer.setSelection(
Range.createOn( doc.getRoot().getChild( 1 ) )
writer.createRangeOn( doc.getRoot().getChild( 1 ) )
);
} );

Expand Down Expand Up @@ -177,7 +176,7 @@ describe( 'ImageToolbar', () => {
model.change( writer => {
// Select the <paragraph>[...]</paragraph>
writer.setSelection(
Range.createIn( doc.getRoot().getChild( 0 ) )
writer.createRangeIn( doc.getRoot().getChild( 0 ) )
);
} );

Expand Down
3 changes: 1 addition & 2 deletions tests/imageupload/imageuploadediting.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import { UploadAdapterMock, createNativeFileMock, NativeFileReaderMock } from '@
import { setData as setModelData, getData as getModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
import { getData as getViewData } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
import Range from '@ckeditor/ckeditor5-engine/src/model/range';
import Position from '@ckeditor/ckeditor5-engine/src/model/position';

import log from '@ckeditor/ckeditor5-utils/src/log';
import env from '@ckeditor/ckeditor5-utils/src/env';
Expand Down Expand Up @@ -468,7 +467,7 @@ describe( 'ImageUploadEditing', () => {
const image = doc.getRoot().getChild( 0 );

model.change( writer => {
writer.move( Range.createOn( image ), Position.createAt( doc.getRoot(), 2 ) );
writer.move( Range.createOn( image ), writer.createPositionAt( doc.getRoot(), 2 ) );
} );

expect( abortSpy.called ).to.be.false;
Expand Down
8 changes: 3 additions & 5 deletions tests/manual/tickets/106/1.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@

import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
import ArticlePluginSet from '@ckeditor/ckeditor5-core/tests/_utils/articlepluginset';

import Position from '@ckeditor/ckeditor5-engine/src/model/position';
import Range from '@ckeditor/ckeditor5-engine/src/model/range';

const config = {
Expand Down Expand Up @@ -54,7 +52,7 @@ function startExternalInsert( editor ) {

function type( path, text ) {
return new Promise( resolve => {
let position = new Position( model.document.getRoot(), path );
let position = model.createPositionFromPath( model.document.getRoot(), path );
let index = 0;

function typing() {
Expand Down Expand Up @@ -82,7 +80,7 @@ function startExternalInsert( editor ) {
function insertNewLine( path ) {
return wait( 200 ).then( () => {
model.enqueueChange( 'transparent', writer => {
writer.insertElement( 'paragraph', new Position( model.document.getRoot(), path ) );
writer.insertElement( 'paragraph', writer.createPositionFromPath( model.document.getRoot(), path ) );
} );

return Promise.resolve();
Expand All @@ -106,7 +104,7 @@ function startExternalDelete( editor ) {

function removeSecondBlock() {
model.enqueueChange( 'transparent', writer => {
writer.remove( Range.createFromPositionAndShift( new Position( model.document.getRoot(), [ 1 ] ), 1 ) );
writer.remove( Range.createFromPositionAndShift( writer.createPositionFromPath( model.document.getRoot(), [ 1 ] ), 1 ) );
} );
}

Expand Down

0 comments on commit 45ed060

Please sign in to comment.