Trilium Frontend API
    Preparing search index...

    Class ModelText

    Model text node. Type of module:engine/model/node~ModelNode node that contains module:engine/model/text~ModelText#data text data.

    Important: see module:engine/model/node~ModelNode to read about restrictions using Text and Node API.

    Note: keep in mind that Text instances might indirectly got removed from model tree when model is changed. This happens when module:engine/model/writer~ModelWriter model writer is used to change model and the text node is merged with another text node. Then, both text nodes are removed and a new text node is inserted into the model. Because of this behavior, keeping references to Text is not recommended. Instead, consider creating module:engine/model/liveposition~ModelLivePosition live position placed before the text node.

    Hierarchy (View Summary)

    Index

    Constructors

    • Internal

      Creates a text node.

      Note: Constructor of this class shouldn't be used directly in the code. Use the module:engine/model/writer~ModelWriter#createText method instead.

      Parameters

      • Optionaldata: string

        Node's text.

      • Optionalattrs: ModelNodeAttributes

        Node's attributes. See module:utils/tomap~toMap for a list of accepted values.

      Returns ModelText

    Properties

    _data: string

    Text data contained in this text node.

    _index: number

    Index of this node in its parent or null if the node has no parent.

    _startOffset: number

    Offset at which this node starts in its parent or null if the node has no parent.

    Parent of this node. It could be module:engine/model/element~ModelElement or module:engine/model/documentfragment~ModelDocumentFragment. Equals to null if the node has no parent.

    rootName: string

    Unique root name used to identify this root element by module:engine/model/document~ModelDocument.

    Accessors

    • get data(): string

      Returns a text data contained in the node.

      Returns string

    • get offsetSize(): number

      Offset size of this node.

      Represents how much "offset space" is occupied by the node in its parent. It is important for module:engine/model/position~ModelPosition position. When node has offsetSize greater than 1, position can be placed between that node start and end. offsetSize greater than 1 is for nodes that represents more than one entity, i.e. a module:engine/model/text~ModelText text node.

      Returns number

    Methods

    • Internal

      Removes all attributes from the node.

      Returns void

      module:engine/model/writer~ModelWriter#clearAttributes

    • Internal

      Creates a copy of this text node and returns it. Created text node has same text data and attributes as original text node.

      Returns ModelText

      Text instance created using given plain object.

    • Internal

      Removes this node from its parent.

      Returns void

      module:engine/model/writer~ModelWriter#remove

    • Internal

      Removes an attribute with given key from the node.

      Parameters

      • key: string

        Key of attribute to remove.

      Returns boolean

      true if the attribute was set on the element, false otherwise.

      module:engine/model/writer~ModelWriter#removeAttribute

    • Internal

      Sets attribute on the node. If attribute with the same key already is set, it's value is overwritten.

      Parameters

      • key: string

        Key of attribute to set.

      • value: unknown

        Attribute value.

      Returns void

      module:engine/model/writer~ModelWriter#setAttribute

    • Internal

      Removes all attributes from the node and sets given attributes.

      Parameters

      • attrs: ModelNodeAttributes

        Attributes to set. See module:utils/tomap~toMap for a list of accepted values.

      Returns void

      module:engine/model/writer~ModelWriter#setAttributes

    • Returns ancestors array of this node.

      Parameters

      • Optionaloptions: { includeSelf?: boolean; parentFirst?: boolean }

        Options object.

        • OptionalincludeSelf?: boolean

          When set to true this node will be also included in parent's array.

        • OptionalparentFirst?: boolean

          When set to true, array will be sorted from node's parent to root element, otherwise root element will be the first item in the array.

      Returns (ModelDocumentFragment | ModelNode)[]

      Array with ancestors.

    • Gets an attribute value for given key or undefined if that attribute is not set on node.

      Parameters

      • key: string

        Key of attribute to look for.

      Returns unknown

      Attribute value or undefined.

    • Returns iterator that iterates over this node's attributes.

      Attributes are returned as arrays containing two items. First one is attribute key and second is attribute value. This format is accepted by native Map object and also can be passed in Node constructor.

      Returns IterableIterator<[string, unknown]>

    • Returns a module:engine/model/element~ModelElement or module:engine/model/documentfragment~ModelDocumentFragment which is a common ancestor of both nodes.

      Parameters

      • node: ModelNode

        The second node.

      • Optionaloptions: { includeSelf?: boolean }

        Options object.

        • OptionalincludeSelf?: boolean

          When set to true both nodes will be considered "ancestors" too. Which means that if e.g. node A is inside B, then their common ancestor will be B.

      Returns ModelElement | ModelDocumentFragment

    • Gets path to the node. The path is an array containing starting offsets of consecutive ancestors of this node, beginning from module:engine/model/node~ModelNode#root root, down to this node's starting offset. The path can be used to create module:engine/model/position~ModelPosition Position instance.

      const abc = new Text( 'abc' );
      const foo = new Text( 'foo' );
      const h1 = new ModelElement( 'h1', null, new Text( 'header' ) );
      const p = new ModelElement( 'p', null, [ abc, foo ] );
      const div = new ModelElement( 'div', null, [ h1, p ] );
      foo.getPath(); // Returns [ 1, 3 ]. `foo` is in `p` which is in `div`. `p` starts at offset 1, while `foo` at 3.
      h1.getPath(); // Returns [ 0 ].
      div.getPath(); // Returns [].

      Returns number[]

    • Checks if the node has an attribute with given key.

      Parameters

      • key: string

        Key of attribute to check.

      Returns boolean

      true if attribute with given key is set on node, false otherwise.

    • Checks whether the object is of type module:engine/model/node~ModelNode or its subclass.

      This method is useful when processing model objects that are of unknown type. For example, a function may return a module:engine/model/documentfragment~ModelDocumentFragment or a module:engine/model/node~ModelNode that can be either a text node or an element. This method can be used to check what kind of object is returned.

      someObject.is( 'element' ); // -> true if this is an element
      someObject.is( 'node' ); // -> true if this is a node (a text node or an element)
      someObject.is( 'documentFragment' ); // -> true if this is a document fragment

      Since this method is also available on a range of view objects, you can prefix the type of the object with model: or view: to check, for example, if this is the model's or view's element:

      modelElement.is( 'model:element' ); // -> true
      modelElement.is( 'view:element' ); // -> false

      By using this method it is also possible to check a name of an element:

      imageElement.is( 'element', 'imageBlock' ); // -> true
      imageElement.is( 'element', 'imageBlock' ); // -> same as above
      imageElement.is( 'model:element', 'imageBlock' ); // -> same as above, but more precise

      Parameters

      • type: "node" | "model:node"

      Returns this is ModelElement | ModelNode | ModelText | ModelRootElement

      NODE

    • Checks whether the object is of type module:engine/model/element~ModelElement or its subclass.

      element.is( 'element' ); // -> true
      element.is( 'node' ); // -> true
      element.is( 'model:element' ); // -> true
      element.is( 'model:node' ); // -> true

      element.is( 'view:element' ); // -> false
      element.is( 'documentSelection' ); // -> false

      Assuming that the object being checked is an element, you can also check its module:engine/model/element~ModelElement#name name:

      element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element
      text.is( 'element', 'imageBlock' ); -> false

      Parameters

      • type: "element" | "model:element"

      Returns this is ModelElement | ModelRootElement

      ELEMENT

    • Checks whether the object is of type module:engine/model/rootelement~ModelRootElement.

      rootElement.is( 'rootElement' ); // -> true
      rootElement.is( 'element' ); // -> true
      rootElement.is( 'node' ); // -> true
      rootElement.is( 'model:rootElement' ); // -> true
      rootElement.is( 'model:element' ); // -> true
      rootElement.is( 'model:node' ); // -> true

      rootElement.is( 'view:element' ); // -> false
      rootElement.is( 'documentFragment' ); // -> false

      Assuming that the object being checked is an element, you can also check its module:engine/model/element~ModelElement#name name:

      rootElement.is( 'rootElement', '$root' ); // -> same as above
      

      Parameters

      • type: "rootElement" | "model:rootElement"

      Returns this is ModelRootElement

      ROOT_ELEMENT

    • Checks whether the object is of type module:engine/model/text~ModelText.

      text.is( '$text' ); // -> true
      text.is( 'node' ); // -> true
      text.is( 'model:$text' ); // -> true
      text.is( 'model:node' ); // -> true

      text.is( 'view:$text' ); // -> false
      text.is( 'documentSelection' ); // -> false

      Note: Until version 20.0.0 this method wasn't accepting '$text' type. The legacy 'text' type is still accepted for backward compatibility.

      Parameters

      • type: "$text" | "model:$text"

      Returns this is ModelText

      TEXT

    • Checks whether the object is of type module:engine/model/position~ModelPosition or its subclass.

      position.is( 'position' ); // -> true
      position.is( 'model:position' ); // -> true

      position.is( 'view:position' ); // -> false
      position.is( 'documentSelection' ); // -> false

      Parameters

      • type: "position" | "model:position"

      Returns this is ModelPosition | ModelLivePosition

      POSITION

    • Checks whether the object is of type module:engine/model/liveposition~ModelLivePosition.

      livePosition.is( 'position' ); // -> true
      livePosition.is( 'model:position' ); // -> true
      livePosition.is( 'liveposition' ); // -> true
      livePosition.is( 'model:livePosition' ); // -> true

      livePosition.is( 'view:position' ); // -> false
      livePosition.is( 'documentSelection' ); // -> false

      Parameters

      • type: "livePosition" | "model:livePosition"

      Returns this is ModelLivePosition

      LIVE_POSITION

    • Checks whether the object is of type module:engine/model/range~ModelRange or its subclass.

      range.is( 'range' ); // -> true
      range.is( 'model:range' ); // -> true

      range.is( 'view:range' ); // -> false
      range.is( 'documentSelection' ); // -> false

      Parameters

      • type: "range" | "model:range"

      Returns this is ModelRange | ModelLiveRange

      RANGE

    • Checks whether the object is of type module:engine/model/liverange~ModelLiveRange.

      liveRange.is( 'range' ); // -> true
      liveRange.is( 'model:range' ); // -> true
      liveRange.is( 'liveRange' ); // -> true
      liveRange.is( 'model:liveRange' ); // -> true

      liveRange.is( 'view:range' ); // -> false
      liveRange.is( 'documentSelection' ); // -> false

      Parameters

      • type: "liveRange" | "model:liveRange"

      Returns this is ModelLiveRange

      LIVE_RANGE

    • Checks whether the object is of type module:engine/model/documentfragment~ModelDocumentFragment.

      docFrag.is( 'documentFragment' ); // -> true
      docFrag.is( 'model:documentFragment' ); // -> true

      docFrag.is( 'view:documentFragment' ); // -> false
      docFrag.is( 'element' ); // -> false
      docFrag.is( 'node' ); // -> false

      Parameters

      • type: "documentFragment" | "model:documentFragment"

      Returns this is ModelDocumentFragment

      DOCUMENT_FRAGMENT

    • Checks whether the object is of type module:engine/model/selection~ModelSelection or module:engine/model/documentselection~ModelDocumentSelection.

      selection.is( 'selection' ); // -> true
      selection.is( 'model:selection' ); // -> true

      selection.is( 'view:selection' ); // -> false
      selection.is( 'range' ); // -> false

      Parameters

      • type: "selection" | "model:selection"

      Returns this is ModelSelection | ModelDocumentSelection

      SELECTION

    • Checks whether the object is of type module:engine/model/documentselection~ModelDocumentSelection.

      selection.is( 'selection' ); // -> true
      selection.is( 'documentSelection' ); // -> true
      selection.is( 'model:selection' ); // -> true
      selection.is( 'model:documentSelection' ); // -> true

      selection.is( 'view:selection' ); // -> false
      selection.is( 'element' ); // -> false
      selection.is( 'node' ); // -> false

      Parameters

      • type: "documentSelection" | "model:documentSelection"

      Returns this is ModelDocumentSelection

      DOCUMENT_SELECTION

    • Checks whether the object is of type module:engine/model/markercollection~Marker.

      marker.is( 'marker' ); // -> true
      marker.is( 'model:marker' ); // -> true

      marker.is( 'view:element' ); // -> false
      marker.is( 'documentSelection' ); // -> false

      Parameters

      • type: "marker" | "model:marker"

      Returns this is Marker

      MARKER

    • Checks whether the object is of type module:engine/model/textproxy~ModelTextProxy.

      textProxy.is( '$textProxy' ); // -> true
      textProxy.is( 'model:$textProxy' ); // -> true

      textProxy.is( 'view:$textProxy' ); // -> false
      textProxy.is( 'range' ); // -> false

      Note: Until version 20.0.0 this method wasn't accepting '$textProxy' type. The legacy 'textProxt' type is still accepted for backward compatibility.

      Parameters

      • type: "$textProxy" | "model:$textProxy"

      Returns this is ModelTextProxy

      TEXT_PROXY

    • Checks whether the object is of type module:engine/model/element~ModelElement or its subclass and has the specified name.

      element.is( 'element', 'imageBlock' ); // -> true if this is an <imageBlock> element
      text.is( 'element', 'imageBlock' ); -> false

      Type Parameters

      • N extends string

      Parameters

      • type: "element" | "model:element"
      • name: N

      Returns this is (ModelElement | ModelRootElement) & { name: N }

      ELEMENT_NAME

    • Checks whether the object is of type module:engine/model/rootelement~ModelRootElement and has the specified name.

      rootElement.is( 'rootElement', '$root' );
      

      Type Parameters

      • N extends string

      Parameters

      • type: "rootElement" | "model:rootElement"
      • name: N

      Returns this is ModelRootElement & { name: N }

      ROOT_ELEMENT_NAME

    • Returns whether this node is after given node. false is returned if nodes are in different trees (for example, in different module:engine/model/documentfragment~ModelDocumentFragments).

      Parameters

      Returns boolean

    • Returns true if the node is inside a document root that is attached to the document.

      Returns boolean

    • Returns whether this node is before given node. false is returned if nodes are in different trees (for example, in different module:engine/model/documentfragment~ModelDocumentFragments).

      Parameters

      Returns boolean

    • Converts Text instance to plain object and returns it.

      @returnsText instance converted to plain object.

      Returns unknown

    • Creates a Text instance from given plain object (i.e. parsed JSON string).

      Parameters

      • json: any

        Plain object to be converted to Text.

      Returns ModelText

      Text instance created using given plain object.

    References

    document: any
    endOffset: any
    index: any
    nextSibling: any
    previousSibling: any
    root: any
    startOffset: any