1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-03-10 00:10:18 +01:00
Ian Storm Taylor 204f491b6b update docs
2017-10-17 20:07:14 -07:00

2.7 KiB

Utils

import { 
  findDOMNode,
  findDOMRange,
  findNode,
  findRange,
  getEventRange,
  getEventTransfer,
  setEventTransfer,
} from 'slate-react'

React-specific utility functions for Slate that may be useful in certain use cases.

Functions

findDOMNode

findDOMNode(node: Node) => DOMElement

Find the DOM node from a Slate Node. Modelled after React's built-in findDOMNode helper.

function componentDidUpdate() {
  const { node } = this.props
  const element = findDOMNode(node)
  // Do something with the DOM `element`...
}

findDOMRange

findDOMRange(range: Range) => DOMRange

Find the DOM range from a Slate Range.

function onChange(change) {
  const { state } = change
  const range = findDOMRange(state.selection)
  // Do something with the DOM `range`...
}

findNode

findNode(element: DOMElement, state: State) => Node

Find the Slate node from a DOM element and Slate state.

function onSomeNativeEvent(event) {
  const node = findNode(event.target)
  // Do something with `node`...
}

findRange

findRange(selection: DOMSelection, state: State) => Range findRange(range: DOMRange, state: State) => Range

Find the Slate range from a DOM range or selection and a Slate state.

function onSomeNativeEvent() {
  // You can find a range from a native DOM selection...
  const nativeSelection = window.getSelection()
  const range = findRange(nativeSelection, state)

  // ...or from a native DOM range...
  const nativeRange = nativeSelection.getRangeAt(0)
  const range = findRange(nativeRange, state)
}

getEventRange

getEventRange(event: DOMEvent|ReactEvent, state: State) => Range

Get the affected Slate range from a DOM event and Slate state.

function onDrop(event, change, editor) {
  const targetRange = getEventRange(event)
  // Do something at the drop `targetRange`...
}

getEventTransfer

getEventTransfer(event: DOMEvent|ReactEvent) => Object

Get the Slate-related data from a DOM event and Slate state.

function onDrop(event, change, editor) {
  const transfer = getEventTransfer(event)
  const { type, node } = transfer

  if (type == 'node') {
    // Do something with `node`...
  }
}

setEventTransfer

setEventTransfer(event: DOMEvent|ReactEvent, type: String, data: Any)

Sets the Slate-related data with type on an event. The type must be one of the types Slate recognizes: 'fragment', 'html', 'node', 'rich', or 'text'.

function onDragStart(event, change, editor) {
  const { state } = change
  const { startNode } = state
  setEventTransfer(event, 'node', startNode)
}