浏览代码

Merge branch 'master' into i/6528

Maciej Gołaszewski 5 年之前
父节点
当前提交
7ea0ae92d9
共有 30 个文件被更改,包括 117 次插入62 次删除
  1. 1 1
      packages/ckeditor5-engine/.travis.yml
  2. 1 1
      packages/ckeditor5-engine/src/model/documentfragment.js
  3. 1 1
      packages/ckeditor5-engine/src/model/documentselection.js
  4. 6 5
      packages/ckeditor5-engine/src/model/element.js
  5. 3 1
      packages/ckeditor5-engine/src/model/liveposition.js
  6. 3 1
      packages/ckeditor5-engine/src/model/liverange.js
  7. 1 1
      packages/ckeditor5-engine/src/model/markercollection.js
  8. 1 10
      packages/ckeditor5-engine/src/model/node.js
  9. 1 1
      packages/ckeditor5-engine/src/model/position.js
  10. 1 1
      packages/ckeditor5-engine/src/model/range.js
  11. 12 4
      packages/ckeditor5-engine/src/model/rootelement.js
  12. 1 1
      packages/ckeditor5-engine/src/model/selection.js
  13. 3 1
      packages/ckeditor5-engine/src/model/text.js
  14. 1 1
      packages/ckeditor5-engine/src/model/textproxy.js
  15. 2 2
      packages/ckeditor5-engine/src/model/writer.js
  16. 10 4
      packages/ckeditor5-engine/src/view/attributeelement.js
  17. 10 3
      packages/ckeditor5-engine/src/view/containerelement.js
  18. 1 1
      packages/ckeditor5-engine/src/view/documentfragment.js
  19. 1 1
      packages/ckeditor5-engine/src/view/documentselection.js
  20. 12 3
      packages/ckeditor5-engine/src/view/editableelement.js
  21. 5 3
      packages/ckeditor5-engine/src/view/element.js
  22. 9 3
      packages/ckeditor5-engine/src/view/emptyelement.js
  23. 1 1
      packages/ckeditor5-engine/src/view/node.js
  24. 1 1
      packages/ckeditor5-engine/src/view/position.js
  25. 1 1
      packages/ckeditor5-engine/src/view/range.js
  26. 14 3
      packages/ckeditor5-engine/src/view/rooteditableelement.js
  27. 1 1
      packages/ckeditor5-engine/src/view/selection.js
  28. 3 1
      packages/ckeditor5-engine/src/view/text.js
  29. 1 1
      packages/ckeditor5-engine/src/view/textproxy.js
  30. 9 3
      packages/ckeditor5-engine/src/view/uielement.js

+ 1 - 1
packages/ckeditor5-engine/.travis.yml

@@ -7,7 +7,7 @@ language: node_js
 services:
 - xvfb
 node_js:
-- '8'
+- '10'
 cache:
   yarn: true
 branches:

+ 1 - 1
packages/ckeditor5-engine/src/model/documentfragment.js

@@ -133,7 +133,7 @@ export default class DocumentFragment {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'documentFragment' || type == 'model:documentFragment';
+		return type === 'documentFragment' || type === 'model:documentFragment';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/model/documentselection.js

@@ -382,7 +382,7 @@ export default class DocumentSelection {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'selection' ||
+		return type === 'selection' ||
 			type == 'model:selection' ||
 			type == 'documentSelection' ||
 			type == 'model:documentSelection';

+ 6 - 5
packages/ckeditor5-engine/src/model/element.js

@@ -116,13 +116,14 @@ export default class Element extends Node {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type.replace( /^model:/, '' );
-
 		if ( !name ) {
-			return cutType == 'element' || cutType == this.name || super.is( type );
-		} else {
-			return cutType == 'element' && name == this.name;
+			return type === 'element' || type === 'model:element' ||
+				type === this.name || type === 'model:' + this.name ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'node' || type === 'model:node';
 		}
+
+		return name === this.name && ( type === 'element' || type === 'model:element' );
 	}
 
 	/**

+ 3 - 1
packages/ckeditor5-engine/src/model/liveposition.js

@@ -80,7 +80,9 @@ export default class LivePosition extends Position {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'livePosition' || type == 'model:livePosition' || super.is( type );
+		return type === 'livePosition' || type === 'model:livePosition' ||
+			// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+			type == 'position' || type === 'model:position';
 	}
 
 	/**

+ 3 - 1
packages/ckeditor5-engine/src/model/liverange.js

@@ -57,7 +57,9 @@ export default class LiveRange extends Range {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'liveRange' || type == 'model:liveRange' || super.is( type );
+		return type === 'liveRange' || type === 'model:liveRange' ||
+			// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+			type == 'range' || type === 'model:range';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/model/markercollection.js

@@ -463,7 +463,7 @@ class Marker {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'marker' || type == 'model:marker';
+		return type === 'marker' || type === 'model:marker';
 	}
 
 	/**

+ 1 - 10
packages/ckeditor5-engine/src/model/node.js

@@ -10,7 +10,6 @@
 import toMap from '@ckeditor/ckeditor5-utils/src/tomap';
 import CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';
 import compareArrays from '@ckeditor/ckeditor5-utils/src/comparearrays';
-
 // To check if component is loaded more than once.
 import '@ckeditor/ckeditor5-utils/src/version';
 
@@ -432,7 +431,7 @@ export default class Node {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'node' || type == 'model:node';
+		return type === 'node' || type === 'model:node';
 	}
 
 	/**
@@ -500,11 +499,3 @@ export default class Node {
 		this._attrs.clear();
 	}
 }
-
-/**
- * The node's parent does not contain this node.
- *
- * This error may be thrown from corrupted trees.
- *
- * @error model-node-not-found-in-parent
- */

+ 1 - 1
packages/ckeditor5-engine/src/model/position.js

@@ -539,7 +539,7 @@ export default class Position {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'position' || type == 'model:position';
+		return type === 'position' || type === 'model:position';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/model/range.js

@@ -158,7 +158,7 @@ export default class Range {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'range' || type == 'model:range';
+		return type === 'range' || type === 'model:range';
 	}
 
 	/**

+ 12 - 4
packages/ckeditor5-engine/src/model/rootelement.js

@@ -80,12 +80,19 @@ export default class RootElement extends Element {
 	 * @returns {Boolean}
 	 */
 	is( type, name ) {
-		const cutType = type.replace( 'model:', '' );
 		if ( !name ) {
-			return cutType == 'rootElement' || super.is( type );
-		} else {
-			return ( cutType == 'rootElement' && name == this.name ) || super.is( type, name );
+			return type === 'rootElement' || type === 'model:rootElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'element' || type === 'model:element' ||
+				type === this.name || type === 'model:' + this.name ||
+				type === 'node' || type === 'model:node';
 		}
+
+		return name === this.name && (
+			type === 'rootElement' || type === 'model:rootElement' ||
+			// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+			type === 'element' || type === 'model:element'
+		);
 	}
 
 	/**
@@ -105,3 +112,4 @@ export default class RootElement extends Element {
 	// @if CK_DEBUG_ENGINE // 	console.log( 'ModelRootElement: ' + this );
 	// @if CK_DEBUG_ENGINE // }
 }
+

+ 1 - 1
packages/ckeditor5-engine/src/model/selection.js

@@ -632,7 +632,7 @@ export default class Selection {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'selection' || type == 'model:selection';
+		return type === 'selection' || type === 'model:selection';
 	}
 
 	/**

+ 3 - 1
packages/ckeditor5-engine/src/model/text.js

@@ -82,7 +82,9 @@ export default class Text extends Node {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'text' || type == 'model:text' || super.is( type );
+		return type === 'text' || type === 'model:text' ||
+			// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+			type === 'node' || type === 'model:node';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/model/textproxy.js

@@ -178,7 +178,7 @@ export default class TextProxy {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'textProxy' || type == 'model:textProxy';
+		return type === 'textProxy' || type === 'model:textProxy';
 	}
 
 	/**

+ 2 - 2
packages/ckeditor5-engine/src/model/writer.js

@@ -1360,14 +1360,14 @@ export default class Writer {
 			const markerRange = marker.getRange();
 			let isAffected = false;
 
-			if ( type == 'move' ) {
+			if ( type === 'move' ) {
 				isAffected =
 					positionOrRange.containsPosition( markerRange.start ) ||
 					positionOrRange.start.isEqual( markerRange.start ) ||
 					positionOrRange.containsPosition( markerRange.end ) ||
 					positionOrRange.end.isEqual( markerRange.end );
 			} else {
-				// if type == 'merge'.
+				// if type === 'merge'.
 				const elementBefore = positionOrRange.nodeBefore;
 				const elementAfter = positionOrRange.nodeAfter;
 

+ 10 - 4
packages/ckeditor5-engine/src/view/attributeelement.js

@@ -157,12 +157,18 @@ export default class AttributeElement extends Element {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type && type.replace( /^view:/, '' );
-
 		if ( !name ) {
-			return cutType == 'attributeElement' || super.is( type );
+			return type === 'attributeElement' || type === 'view:attributeElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === this.name || type === 'view:' + this.name ||
+				type === 'element' || type === 'view:element' ||
+				type === 'node' || type === 'view:node';
 		} else {
-			return ( cutType == 'attributeElement' && name == this.name ) || super.is( type, name );
+			return name === this.name && (
+				type === 'attributeElement' || type === 'view:attributeElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'element' || type === 'view:element'
+			);
 		}
 	}
 

+ 10 - 3
packages/ckeditor5-engine/src/view/containerelement.js

@@ -83,11 +83,18 @@ export default class ContainerElement extends Element {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type && type.replace( /^view:/, '' );
 		if ( !name ) {
-			return cutType == 'containerElement' || super.is( type );
+			return type === 'containerElement' || type === 'view:containerElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === this.name || type === 'view:' + this.name ||
+				type === 'element' || type === 'view:element' ||
+				type === 'node' || type === 'view:node';
 		} else {
-			return ( cutType == 'containerElement' && name == this.name ) || super.is( type, name );
+			return name === this.name && (
+				type === 'containerElement' || type === 'view:containerElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'element' || type === 'view:element'
+			);
 		}
 	}
 }

+ 1 - 1
packages/ckeditor5-engine/src/view/documentfragment.js

@@ -118,7 +118,7 @@ export default class DocumentFragment {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'documentFragment' || type == 'view:documentFragment';
+		return type === 'documentFragment' || type === 'view:documentFragment';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/view/documentselection.js

@@ -292,7 +292,7 @@ export default class DocumentSelection {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'selection' ||
+		return type === 'selection' ||
 			type == 'documentSelection' ||
 			type == 'view:selection' ||
 			type == 'view:documentSelection';

+ 12 - 3
packages/ckeditor5-engine/src/view/editableelement.js

@@ -95,11 +95,20 @@ export default class EditableElement extends ContainerElement {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type && type.replace( /^view:/, '' );
 		if ( !name ) {
-			return cutType == 'editableElement' || super.is( type );
+			return type === 'editableElement' || type === 'view:editableElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'containerElement' || type === 'view:containerElement' ||
+				type === this.name || type === 'view:' + this.name ||
+				type === 'element' || type === 'view:element' ||
+				type === 'node' || type === 'view:node';
 		} else {
-			return ( cutType == 'editableElement' && name == this.name ) || super.is( type, name );
+			return name === this.name && (
+				type === 'editableElement' || type === 'view:editableElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'containerElement' || type === 'view:containerElement' ||
+				type === 'element' || type === 'view:element'
+			);
 		}
 	}
 

+ 5 - 3
packages/ckeditor5-engine/src/view/element.js

@@ -176,11 +176,13 @@ export default class Element extends Node {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type.replace( /^view:/, '' );
 		if ( !name ) {
-			return cutType == 'element' || cutType == this.name || super.is( type );
+			return type === this.name || type === 'view:' + this.name ||
+				type === 'element' || type === 'view:element' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'node' || type === 'view:node';
 		} else {
-			return cutType == 'element' && name == this.name;
+			return name === this.name && ( type === 'element' || type === 'view:element' );
 		}
 	}
 

+ 9 - 3
packages/ckeditor5-engine/src/view/emptyelement.js

@@ -74,11 +74,17 @@ export default class EmptyElement extends Element {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type.replace( /^view:/, '' );
 		if ( !name ) {
-			return cutType == 'emptyElement' || super.is( type );
+			return type === 'emptyElement' || type === 'view:emptyElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === this.name || type === 'view:' + this.name ||
+				type === 'element' || type === 'view:element' ||
+				type === 'node' || type === 'view:node';
 		} else {
-			return ( cutType == 'emptyElement' && name == this.name ) || super.is( type, name );
+			return name === this.name && (
+				type === 'emptyElement' || type === 'view:emptyElement' ||
+				type === 'element' || type === 'view:element'
+			);
 		}
 	}
 

+ 1 - 1
packages/ckeditor5-engine/src/view/node.js

@@ -339,7 +339,7 @@ export default class Node {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'node' || type == 'view:node';
+		return type === 'node' || type === 'view:node';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/view/position.js

@@ -222,7 +222,7 @@ export default class Position {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'position' || type == 'view:position';
+		return type === 'position' || type === 'view:position';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/view/range.js

@@ -449,7 +449,7 @@ export default class Range {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'range' || type == 'view:range';
+		return type === 'range' || type === 'view:range';
 	}
 
 	/**

+ 14 - 3
packages/ckeditor5-engine/src/view/rooteditableelement.js

@@ -68,11 +68,22 @@ export default class RootEditableElement extends EditableElement {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type.replace( /^view:/, '' );
 		if ( !name ) {
-			return cutType == 'rootElement' || super.is( type );
+			return type === 'rootElement' || type === 'view:rootElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'editableElement' || type === 'view:editableElement' ||
+				type === 'containerElement' || type === 'view:containerElement' ||
+				type === this.name || type === 'view:' + this.name ||
+				type === 'element' || type === 'view:element' ||
+				type === 'node' || type === 'view:node';
 		} else {
-			return ( cutType == 'rootElement' && name == this.name ) || super.is( type, name );
+			return name === this.name && (
+				type === 'rootElement' || type === 'view:rootElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === 'editableElement' || type === 'view:editableElement' ||
+				type === 'containerElement' || type === 'view:containerElement' ||
+				type === 'element' || type === 'view:element'
+			);
 		}
 	}
 

+ 1 - 1
packages/ckeditor5-engine/src/view/selection.js

@@ -590,7 +590,7 @@ export default class Selection {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'selection' || type == 'view:selection';
+		return type === 'selection' || type === 'view:selection';
 	}
 
 	/**

+ 3 - 1
packages/ckeditor5-engine/src/view/text.js

@@ -60,7 +60,9 @@ export default class Text extends Node {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'text' || type == 'view:text' || super.is( type );
+		return type === 'text' || type === 'view:text' ||
+			// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+			type === 'node' || type === 'view:node';
 	}
 
 	/**

+ 1 - 1
packages/ckeditor5-engine/src/view/textproxy.js

@@ -156,7 +156,7 @@ export default class TextProxy {
 	 * @returns {Boolean}
 	 */
 	is( type ) {
-		return type == 'textProxy' || type == 'view:textProxy';
+		return type === 'textProxy' || type === 'view:textProxy';
 	}
 
 	/**

+ 9 - 3
packages/ckeditor5-engine/src/view/uielement.js

@@ -87,11 +87,17 @@ export default class UIElement extends Element {
 	 * @returns {Boolean}
 	 */
 	is( type, name = null ) {
-		const cutType = type.replace( /^view:/, '' );
 		if ( !name ) {
-			return cutType == 'uiElement' || super.is( type );
+			return type === 'uiElement' || type === 'view:uiElement' ||
+				// From super.is(). This is highly utilised method and cannot call super. See ckeditor/ckeditor5#6529.
+				type === this.name || type === 'view:' + this.name ||
+				type === 'element' || type === 'view:element' ||
+				type === 'node' || type === 'view:node';
 		} else {
-			return ( cutType == 'uiElement' && name == this.name ) || super.is( type, name );
+			return name === this.name && (
+				type === 'uiElement' || type === 'view:uiElement' ||
+				type === 'element' || type === 'view:element'
+			);
 		}
 	}