Преглед изворни кода

Removed Editable and EditableCollection classes. Aligned editor element naming to engine's convention.

Piotrek Koszuliński пре 9 година
родитељ
комит
50ae612172
7 измењених фајлова са 15 додато и 427 уклоњено
  1. 3 0
      package.json
  2. 12 14
      src/creator/standardcreator.js
  3. 0 112
      src/editable.js
  4. 0 60
      src/editablecollection.js
  5. 0 9
      src/editor.js
  6. 0 128
      tests/editable.js
  7. 0 104
      tests/editablecollection.js

+ 3 - 0
package.json

@@ -8,11 +8,14 @@
     "WYSIWYG"
   ],
   "dependencies": {
+    "ckeditor5-basic-styles": "ckeditor/ckeditor5-basic-styles#t/1",
     "ckeditor5-creator-classic": "ckeditor/ckeditor5-creator-classic",
     "ckeditor5-delete": "ckeditor/ckeditor5-delete",
     "ckeditor5-engine": "ckeditor/ckeditor5-engine",
     "ckeditor5-enter": "ckeditor/ckeditor5-enter",
+    "ckeditor5-paragraph": "ckeditor/ckeditor5-paragraph#t/1",
     "ckeditor5-theme-lark": "ckeditor/ckeditor5-theme-lark",
+    "ckeditor5-typing": "ckeditor/ckeditor5-typing#t/1",
     "ckeditor5-ui": "ckeditor/ckeditor5-ui",
     "ckeditor5-ui-default": "ckeditor/ckeditor5-ui-default",
     "ckeditor5-undo": "ckeditor/ckeditor5-undo",

+ 12 - 14
src/creator/standardcreator.js

@@ -48,14 +48,13 @@ export default class StandardCreator extends Creator {
 	/**
 	 * Updates the {@link ckeditor5.Editor#element editor element}'s content with the data.
 	 *
-	 * @param [elementName] If not specified, the first element will be used.
+	 * @param [elementName='main'] If not specified, the first element will be used.
 	 */
-	updateEditorElement( elementName ) {
-		if ( !elementName ) {
-			elementName = this.editor.firstElementName;
-		}
-
-		StandardCreator.setDataInElement( this.editor.elements.get( elementName ), this.editor.getData( elementName ) );
+	updateEditorElement( elementName = 'main' ) {
+		StandardCreator.setDataInElement(
+			this.editor.elements.get( this.editor.firstElementName ),
+			this.editor.getData( elementName )
+		);
 	}
 
 	/**
@@ -71,14 +70,13 @@ export default class StandardCreator extends Creator {
 	/**
 	 * Loads the data from the given {@link ckeditor5.Editor#element editor element} to the editable.
 	 *
-	 * @param [elementName] If not specified, the first element will be used.
+	 * @param [elementName='main']
 	 */
-	loadDataFromEditorElement( elementName ) {
-		if ( !elementName ) {
-			elementName = this.editor.firstElementName;
-		}
-
-		this.editor.setData( StandardCreator.getDataFromElement( this.editor.elements.get( elementName ) ), elementName );
+	loadDataFromEditorElement( elementName = 'main' ) {
+		this.editor.setData(
+			StandardCreator.getDataFromElement( this.editor.elements.get( this.editor.firstElementName ) ),
+			elementName
+		);
 	}
 
 	/**

+ 0 - 112
src/editable.js

@@ -1,112 +0,0 @@
-/**
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
-
-'use strict';
-
-import mix from './utils/mix.js';
-import ObservableMixin from './utils/observablemixin.js';
-import FocusObserver from './engine/view/observer/focusobserver.js';
-
-/**
- * Class representing a single editable element. It combines the {@link ckeditor5.Editable#viewElement editable view}
- * with the {@link ckeditor5.Editable#domElement editable DOM element} to which the view is rendering.
- *
- * @memberOf ckeditor5
- * @mixes utils.ObservaleMixin
- */
-export default class Editable {
-	/**
-	 * Creates a new instance of the Editable class.
-	 *
-	 * @param {ckeditor5.Editor} editor The editor instance.
-	 * @param {String} name The name of the editable.
-	 */
-	constructor( editor, name ) {
-		/**
-		 * The editor instance.
-		 *
-		 * @readonly
-		 * @member {ckeditor5.Editor} ckeditor5.Editable#editor
-		 */
-		this.editor = editor;
-
-		/**
-		 * The name of the editable.
-		 *
-		 * @readonly
-		 * @member {String} ckeditor5.Editable#name
-		 */
-		this.name = name;
-
-		/**
-		 * Whether the editable is in read-write or read-only mode.
-		 *
-		 * @observable
-		 * @member {Boolean} ckeditor5.Editable#isEditable
-		 */
-		this.set( 'isEditable', true );
-
-		/**
-		 * Whether the editable is focused.
-		 *
-		 * @readonly
-		 * @observable
-		 * @member {Boolean} ckeditor5.Editable#isFocused
-		 */
-		this.set( 'isFocused', false );
-
-		/**
-		 * The editable DOM element.
-		 *
-		 * @readonly
-		 * @member {HTMLElement} ckeditor5.Editable#domElement
-		 */
-
-		/**
-		 * The view element which holds this editable.
-		 *
-		 * @readonly
-		 * @member {engine.view.Element} ckeditor5.Editable#viewElement
-		 */
-	}
-
-	/**
-	 * Binds the {@link ckeditor5.Editable#viewElement editable's view} to a concrete DOM element.
-	 *
-	 * @param {HTMLElement} domElement The DOM element which holds the editable.
-	 */
-	bindTo( domElement ) {
-		const editingView = this.editor.editing.view;
-		const viewElement = editingView.createRoot( domElement, this.name );
-
-		this.domElement = domElement;
-		this.viewElement = viewElement;
-
-		// Move to EditingController constructor.
-		editingView.addObserver( FocusObserver );
-
-		this.listenTo( editingView, 'focus', ( evt, data ) => {
-			if ( data.target === this.viewElement ) {
-				this.isFocused = true;
-			}
-		} );
-
-		this.listenTo( editingView, 'blur', ( evt, data ) => {
-			if ( data.target === this.viewElement ) {
-				this.isFocused = false;
-			}
-		} );
-	}
-
-	/**
-	 * Destroys the editable.
-	 */
-	destroy() {
-		this.stopListening();
-		this.domElement = this.viewElement = null;
-	}
-}
-
-mix( Editable, ObservableMixin );

+ 0 - 60
src/editablecollection.js

@@ -1,60 +0,0 @@
-/**
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
-
-'use strict';
-
-import mix from './utils/mix.js';
-import Collection from './utils/collection.js';
-import ObservableMixin from './utils/observablemixin.js';
-
-/**
- * A collection of {@link ckeditor5.Editable editables}.
- *
- * @memberOf ckeditor5
- * @mixes utils.ObservaleMixin
- * @extends utils.Collection
- */
-export default class EditableCollection extends Collection {
-	/**
-	 * Creates a new instance of EditableCollection.
-	 */
-	constructor() {
-		super( { idProperty: 'name' } );
-
-		/**
-		 * The currently focused editable.
-		 *
-		 * @readonly
-		 * @observable
-		 * @member {ckeditor5.Editable} ckeditor5.EditableCollection#current
-		 */
-		this.set( 'current', null );
-
-		this.on( 'add', ( evt, editable ) => {
-			this.listenTo( editable, 'change:isFocused', ( evt, name, value ) => {
-				this.current = value ? editable : null;
-			} );
-		} );
-
-		this.on( 'remove', ( evt, editable ) => {
-			this.stopListening( editable );
-		} );
-	}
-
-	/**
-	 * Destroys the collection.
-	 */
-	destroy() {
-		this.stopListening();
-
-		for ( let editable of this ) {
-			editable.destroy();
-		}
-
-		this.clear();
-	}
-}
-
-mix( EditableCollection, ObservableMixin );

+ 0 - 9
src/editor.js

@@ -8,7 +8,6 @@
 import ObservableMixin from './utils/observablemixin.js';
 import Config from './utils/config.js';
 import PluginCollection from './plugincollection.js';
-import EditableCollection from './editablecollection.js';
 import Locale from './utils/locale.js';
 import KeystrokeHandler from './keystrokehandler.js';
 import EditingController from './engine/editingcontroller.js';
@@ -70,14 +69,6 @@ export default class Editor {
 		 */
 		this.plugins = new PluginCollection( this );
 
-		/**
-		 * The editables of the editor.
-		 *
-		 * @readonly
-		 * @member {ckeditor5.EditableCollection} ckeditor5.Editor#editables
-		 */
-		this.editables = new EditableCollection();
-
 		/**
 		 * Commands registered to the editor.
 		 *

+ 0 - 128
tests/editable.js

@@ -1,128 +0,0 @@
-/**
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
-
-/* bender-tags: browser-only */
-
-'use strict';
-
-import Editor from '/ckeditor5/editor.js';
-import Editable from '/ckeditor5/editable.js';
-import EditingController from '/ckeditor5/engine/editingcontroller.js';
-import ViewElement from '/ckeditor5/engine/view/element.js';
-
-describe( 'Editable', () => {
-	const ELEMENT_NAME = 'h1';
-	const EDITABLE_NAME = 'editableNaNaNaNa';
-
-	let editable, editor;
-
-	beforeEach( () => {
-		editor = new Editor();
-		editable = new Editable( editor, EDITABLE_NAME );
-	} );
-
-	describe( 'constructor', () => {
-		it( 'sets the properties', () => {
-			expect( editable ).to.have.property( 'editor', editor );
-			expect( editable ).to.have.property( 'name', EDITABLE_NAME );
-			expect( editable ).to.have.property( 'isEditable', true );
-			expect( editable ).to.have.property( 'isFocused', false );
-		} );
-	} );
-
-	describe( 'isEditable', () => {
-		it( 'is observable', () => {
-			const spy = sinon.spy();
-
-			editable.on( 'change:isEditable', spy );
-
-			editable.isEditable = false;
-
-			expect( spy.calledOnce ).to.be.true;
-		} );
-	} );
-
-	describe( 'isFocused', () => {
-		it( 'is observable', () => {
-			const spy = sinon.spy();
-
-			editable.on( 'change:isFocused', spy );
-
-			editable.isFocused = true;
-
-			expect( spy.calledOnce ).to.be.true;
-		} );
-	} );
-
-	describe( 'bindTo', () => {
-		let domElement, editingView;
-
-		beforeEach( () => {
-			domElement = document.createElement( ELEMENT_NAME );
-
-			editor.editing = new EditingController();
-			editingView = editor.editing.view;
-
-			editable.bindTo( domElement );
-		} );
-
-		it( 'creates view root element', () => {
-			expect( editable.viewElement ).to.be.instanceof( ViewElement );
-			expect( editable.viewElement ).to.have.property( 'name', ELEMENT_NAME );
-
-			expect( editingView.viewRoots.get( EDITABLE_NAME ) ).to.equal( editable.viewElement );
-		} );
-
-		describe( 'isFocused binding', () => {
-			it( 'reacts on editingView#focus', () => {
-				editingView.fire( 'focus', {
-					target: editable.viewElement
-				} );
-
-				expect( editable ).to.have.property( 'isFocused', true );
-			} );
-
-			it( 'reacts on editingView#blur', () => {
-				editable.isFocused = true;
-
-				editingView.fire( 'blur', {
-					target: editable.viewElement
-				} );
-
-				expect( editable ).to.have.property( 'isFocused', false );
-			} );
-
-			it( 'reacts on editingView#focus only if target matches', () => {
-				editingView.fire( 'focus', {
-					target: new ViewElement( 'foo' )
-				} );
-
-				expect( editable ).to.have.property( 'isFocused', false );
-			} );
-
-			it( 'reacts on editingView#blur only if target matches', () => {
-				editable.isFocused = true;
-
-				editingView.fire( 'blur', {
-					target: new ViewElement( 'foo' )
-				} );
-
-				expect( editable ).to.have.property( 'isFocused', true );
-			} );
-		} );
-	} );
-
-	describe( 'destroy', () => {
-		it( 'offs everything', () => {
-			const spy = sinon.spy( editable, 'stopListening' );
-
-			editable.destroy();
-
-			expect( spy.calledOnce ).to.be.true;
-			expect( editable.viewElement ).to.be.null;
-			expect( editable.domElement ).to.be.null;
-		} );
-	} );
-} );

+ 0 - 104
tests/editablecollection.js

@@ -1,104 +0,0 @@
-/**
- * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md.
- */
-
-'use strict';
-
-import Editor from '/ckeditor5/editor.js';
-import Editable from '/ckeditor5/editable.js';
-import EditableCollection from '/ckeditor5/editablecollection.js';
-
-describe( 'EditableCollection', () => {
-	let collection, editor;
-
-	beforeEach( () => {
-		collection = new EditableCollection();
-		editor = new Editor();
-	} );
-
-	describe( 'constructor', () => {
-		it( 'configures collection to use idProperty=name', () => {
-			collection.add( new Editable( editor, 'foo' ) );
-
-			expect( collection.get( 'foo' ).name ).to.equal( 'foo' );
-		} );
-
-		it( 'sets observable property current', () => {
-			expect( collection ).to.have.property( 'current', null );
-
-			const spy = sinon.spy();
-			collection.on( 'change:current', spy );
-
-			collection.current = 1;
-
-			expect( spy.calledOnce ).to.be.true;
-		} );
-	} );
-
-	describe( 'add', () => {
-		it( 'binds collection.current to editable.isFocused changes', () => {
-			const editable = new Editable( editor, 'foo' );
-
-			collection.add( editable );
-
-			editable.isFocused = true;
-			expect( collection ).to.have.property( 'current', editable );
-
-			editable.isFocused = false;
-			expect( collection ).to.have.property( 'current', null );
-		} );
-	} );
-
-	describe( 'remove', () => {
-		it( 'stops watching editable.isFocused', () => {
-			const editable = new Editable( editor, 'foo' );
-
-			collection.add( editable );
-
-			editable.isFocused = true;
-
-			collection.remove( editable );
-
-			editable.isFocused = false;
-
-			expect( collection ).to.have.property( 'current', editable );
-		} );
-	} );
-
-	describe( 'destroy', () => {
-		let editables;
-
-		beforeEach( () => {
-			editables = [ new Editable( editor, 'foo' ), new Editable( editor, 'bar' ) ];
-
-			collection.add( editables[ 0 ] );
-			collection.add( editables[ 1 ] );
-		} );
-
-		it( 'stops watching all editables', () => {
-			collection.destroy();
-
-			editables[ 0 ].isFocused = true;
-			editables[ 1 ].isFocused = true;
-
-			expect( collection ).to.have.property( 'current', null );
-		} );
-
-		it( 'destroys all children', () => {
-			editables.forEach( editable => {
-				editable.destroy = sinon.spy();
-			} );
-
-			collection.destroy();
-
-			expect( editables.map( editable => editable.destroy.calledOnce ) ).to.deep.equal( [ true, true ] );
-		} );
-
-		it( 'removes all children', () => {
-			collection.destroy();
-
-			expect( collection ).to.have.lengthOf( 0 );
-		} );
-	} );
-} );