forked from ianstormtaylor/slate
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfind-dom-range.js
38 lines (31 loc) · 921 Bytes
/
find-dom-range.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import findDOMPoint from './find-dom-point'
import warning from 'tiny-warning'
/**
* Find a native DOM range Slate `range`.
*
* @param {Range} range
* @param {Window} win (optional)
* @return {Object|Null}
*/
function findDOMRange(range, win = window) {
warning(
false,
'As of [email protected] the `findDOMRange(range)` helper is deprecated in favor of `editor.findDOMRange(range)`.'
)
const { anchor, focus, isBackward, isCollapsed } = range
const domAnchor = findDOMPoint(anchor, win)
const domFocus = isCollapsed ? domAnchor : findDOMPoint(focus, win)
if (!domAnchor || !domFocus) return null
const r = win.document.createRange()
const start = isBackward ? domFocus : domAnchor
const end = isBackward ? domAnchor : domFocus
r.setStart(start.node, start.offset)
r.setEnd(end.node, end.offset)
return r
}
/**
* Export.
*
* @type {Function}
*/
export default findDOMRange