Document

Document manipulation methods

insertTextNode(options)⇒ object | undefined

Insert a text node in specified place of the document using an insert strategy based on the options object. The options object and all properties are optional. Return the created node only if using an existing transaction (tx).

  • tx: Optional TransactionDocument

  • mode: Insert node where: first, last, before or after

  • refNode: If insert mode is before or after a reference node is mandatory

  • text: Optional text content

  • type: Text style type, ie paragraph, preamble, etc

Parameters

Example

// Insert new empty paragraph at cursor position (or last if no cursor in text)
import {api} from 'writer'
api.document.insertTextNode()

Example

// Insert a preamble with content after the first node in the document as part of your own transaction
import {api} from 'writer'
const firstNode = api.document.nodes()
api.editorSession.transaction(tx => {
  api.document.insert({
    tx: tx,
    type: 'preamble',
    text: 'My new preamble',
    mode: 'after',
    refNode: nodes[0] // First node
  })
})

insertBlockNode(options)⇒ object | undefined

Insert a block node in specified place of the document using an insert strategy based on the options object. The data property that defines the node is mandatory. All other properties are optional. (To insert a node the node type must be defined by a plugin and known to the Writer.) Return the created node only if using an existing transaction (tx).

  • data: Mandatory object describing the node, may or may not have an id

  • tx: Optional TransactionDocument

  • mode: Insert node where: first, last, before or after

  • refNode: If insert mode is before or after a reference node is mandatory

Parameters

Example

// Insert a new node of type "myquote"
import {api} from 'writer'

api.document.insertBlockNode({
  data: {
    type: 'myquote',
    content: 'People who deny the existence of dragons are often eaten by dragons'
    attribution: 'Ursula K. Le Guin'
  }
})

Example

// Insert a new node after the first node in the document as part of your own transaction
import {api} from 'writer'

const firstNode = api.document.nodes()
api.editorSession.transaction(tx => {
  api.document.insert({
    tx: tx,
    data: {
      type: 'myquote',
      content: 'People who deny the existence of dragons are often eaten by dragons'
      attribution: 'Ursula K. Le Guin'
    },
    mode: 'after',
    refNode: nodes[0] // First node
  })
})

nodes(filter)⇒ array

Fetch all nodes in the document, optionally filtered by type

Parameters

Example

// Fetch all image nodes in the document
import {api} from 'writer'

const nodes = api.document.nodes('ximimage')

node(nodeId)⇒ Node | null

Fetch single node from document by id

Parameters

Example

import {api} from 'writer'

const node = api.document.node('paragraph-ba10e7b6b56c5dbbede2e504f5ba40d6')

triggerFetchResourceNode(node, info)

Triggers a fetch resource from a nodes url property. For example when node has properties that is only referenced through an external url.

Parameters

Example

import {api} from 'writer'

// Fetch oauth from Instagram, don't save this fetch in undo/redo history
api.document.triggerFetchResourceNode(this.props.node, { history: false })

insertInlineNode(name, data)⇒ *

Insert an inline node at current selection

Parameters

getPreviousNode(nodeId)⇒ *

Retrieve the previous node. Uses the focused surface to get all nodes in that surface/container and then returns the previous node from the one sent in

Parameters

deleteNode(name, node, options)

Deletes a node from the document. Triggers a 'document:changed' event to all document:changed listeners except the plugin making the change.

Parameters

Example

import {api} from 'writer'
api.deleteNode(this.props.node);

getDocumentNodes()⇒ Array

Deprecated

Get all nodes in the document

Last updated