| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /**
- * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /**
- * @module engine/view/text
- */
- import Node from './node';
- /**
- * Tree view text node.
- *
- * The constructor of this class should not be used directly. To create a new text node instance
- * use the {@link module:engine/view/downcastwriter~DowncastWriter#createText `DowncastWriter#createText()`}
- * method when working on data downcasted from the model or the
- * {@link module:engine/view/upcastwriter~UpcastWriter#createText `UpcastWriter#createText()`}
- * method when working on non-semantic views.
- *
- * @extends module:engine/view/node~Node
- */
- export default class Text extends Node {
- /**
- * Creates a tree view text node.
- *
- * @protected
- * @param {module:engine/view/document~Document} document The document instance to which this text node belongs.
- * @param {String} data The text's data.
- */
- constructor( document, data ) {
- super( document );
- /**
- * The text content.
- *
- * Setting the data fires the {@link module:engine/view/node~Node#event:change:text change event}.
- *
- * @protected
- * @member {String} module:engine/view/text~Text#_textData
- */
- this._textData = data;
- }
- /**
- * Checks whether this object is of the given type.
- *
- * text.is( 'text' ); // -> true
- * text.is( 'node' ); // -> true
- * text.is( 'view:text' ); // -> true
- * text.is( 'view:node' ); // -> true
- *
- * text.is( 'model:text' ); // -> false
- * text.is( 'element' ); // -> false
- * text.is( 'range' ); // -> false
- *
- * {@link module:engine/view/node~Node#is Check the entire list of view objects} which implement the `is()` method.
- *
- * @param {String} type
- * @returns {Boolean}
- */
- 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';
- }
- /**
- * The text content.
- *
- * @readonly
- * @type {String}
- */
- get data() {
- return this._textData;
- }
- /**
- * This getter is required when using the addition assignment operator on protected property:
- *
- * const foo = downcastWriter.createText( 'foo' );
- * const bar = downcastWriter.createText( 'bar' );
- *
- * foo._data += bar.data; // executes: `foo._data = foo._data + bar.data`
- * console.log( foo.data ); // prints: 'foobar'
- *
- * If the protected getter didn't exist, `foo._data` will return `undefined` and result of the merge will be invalid.
- *
- * @protected
- * @type {String}
- */
- get _data() {
- return this.data;
- }
- /**
- * Sets data and fires the {@link module:engine/view/node~Node#event:change:text change event}.
- *
- * @protected
- * @fires change:text
- * @param {String} data New data for the text node.
- */
- set _data( data ) {
- this._fireChange( 'text', this );
- this._textData = data;
- }
- /**
- * Checks if this text node is similar to other text node.
- * Both nodes should have the same data to be considered as similar.
- *
- * @param {module:engine/view/text~Text} otherNode Node to check if it is same as this node.
- * @returns {Boolean}
- */
- isSimilar( otherNode ) {
- if ( !( otherNode instanceof Text ) ) {
- return false;
- }
- return this === otherNode || this.data === otherNode.data;
- }
- /**
- * Clones this node.
- *
- * @protected
- * @returns {module:engine/view/text~Text} Text node that is a clone of this node.
- */
- _clone() {
- return new Text( this.document, this.data );
- }
- // @if CK_DEBUG_ENGINE // toString() {
- // @if CK_DEBUG_ENGINE // return `#${ this.data }`;
- // @if CK_DEBUG_ENGINE // }
- // @if CK_DEBUG_ENGINE // log() {
- // @if CK_DEBUG_ENGINE // console.log( 'ViewText: ' + this );
- // @if CK_DEBUG_ENGINE // }
- // @if CK_DEBUG_ENGINE // logExtended() {
- // @if CK_DEBUG_ENGINE // console.log( 'ViewText: ' + this );
- // @if CK_DEBUG_ENGINE // }
- }
|