1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-02-24 01:02:31 +01:00
slate/docs/reference/models/selection.md
2016-07-12 17:02:42 -07:00

6.7 KiB

Selection

import { Selection } from 'slate'

A selection of a Slate Document. Selections in Slate are modeled after the native DOM Selection API, using terms like "anchor", "focus" and "collapsed".

The "anchor" is the fixed point in a selection, and the "focus" is the non-fixed point, which may move when you move the cursor (eg. when pressing Shift + Right Arrow).

Often times, you don't need to specifically know which point is the "anchor" and which is the "focus", and you just need to know which comes first and last in the document. For these cases, there are many convenience equivalent properties and methods referring to the "start" and "end" points.

Properties

Selection({
  anchorKey: String,
  anchorOffset: Number,
  focusKey: String,
  focusOffset: Number,
  isFocused: Boolean,
  isBackward: Boolean  
})

anchorKey

String

The key of the text node at the selection's anchor point.

anchorOffset

Number

The numbers of characters from the start of the text node at the selection's anchor point.

focusKey

String

The key of the text node at the selection's focus point.

focusOffset

Number

The numbers of characters from the start of the text node at the selection's focus point.

isBackward

Boolean

Whether the selection is backward. A selection is considered "backward" when its focus point references a location earlier in the document than its anchor point.

isFocused

Boolean

Whether the selection currently has focus.

Computed Properties

These properties aren't supplied when creating a selection, but are instead computed based on the real properties.

isBlurred

Boolean

The opposite of isFocused, for convenience.

isCollapsed

Boolean

Whether the selection is collapsed. A selection is considered "collapsed" when the anchor point and focus point of the selection are the same.

isExpanded

Boolean

The opposite of isCollapsed, for convenience.

isForward

Boolean

The opposite of isBackward, for convenience.

startKey

startOffset

endKey

endOffset

A few convenience properties for accessing the first and last point of the selection. When the selection is forward, start refers to the anchor point and end refers to the focus point. And when it's backward they are reversed.

Static Methods

Selection.create

Selection.create(properties: Object) => Selection

Create a new Selection instance with properties.

Checking Methods

has{Edge}AtStartOf

has{Edge}AtStartOf(node: Node) => Boolean

Determine whether a selection has an edge at the start of a node. Where {Edge} can be one of: Anchor, Focus, Start, End or Edge (referring to either point).

has{Edge}AtEndOf

has{Edge}AtEndOf(node: Node) => Boolean

Determine whether a selection has an edge at the end of a node. Where {Edge} can be one of: Anchor, Focus, Start, End or Edge (referring to either point).

has{Edge}Between

has{Edge}Between(node: Node, start: Number, end: Number) => Boolean

Determine whether a selection has an edge in a node between its start and end offset. Where {Edge} can be one of: Anchor, Focus, Start, End or Edge (referring to either point).

has{Edge}In

has{Edge}In(node: Node, start: Number, end: Number) => Boolean

Determine whether a selection has an edge inside a node. Where {Edge} can be one of: Anchor, Focus, Start, End or Edge (referring to either point).

isAtStartOf

isAtStartOf(node: Node) => Boolean

Determine whether the selection is at the start of a node.

isAtEndOf

isAtEndOf(node: Node) => Boolean

Determine whether the selection is at the end of a node.

Transforming Methods

Since Selections are immutable, all of the transforming methods return a new instance of the selection.

blur

blur() => Selection

Change the selection's isFocused property to false.

extendBackward

extendBackward([n = 1: Number]) => Selection

Decrease the selection's focusOffset by n, default to 1.

extendForward

extendForward([n = 1: Number]) => Selection

Increase the selection's focusOffset by n, default to 1.

extendToEndOf

extendToEndOf(node: Node) => Selection

Move the selection's focusOffset to the end of a node.

extendToStartOf

extendToStartOf(node: Node) => Selection

Move the selection's focusOffset to the start of a node.

focus

focus() => Selection

Change the selection's isFocused property to true.

moveTo{Edge}

moveTo{Edge}() => Selection

Move both of the selection's points to an edge, collapsing it. Where {Edge} can be one of: Anchor, Focus, Start or End.

moveToEndOf

moveToEndOf(node: Node) => Selection

Move both of the selection's points to the end of a node.

moveToRangeOf

moveToRangeOf(node: Node) => Selection

Move the selection's anchor point to the start of a node, and its focus point to the end of the same node.

moveToStartOf

moveToStartOf(node: Node) => Selection

Move both of the selection's points to the start of a node.

moveBackward

moveBackward([n = 1: Number]) => Selection

Decrease the selection's anchorOffset and focusOffset by n, defaulting to 1.

moveForward

moveForward([n = 1: Number]) => Selection

Increase the selection's anchorOffset and focusOffset by n, defaulting to 1.