UNPKG

@edtr-io/plugin-text

Version:
43 lines (39 loc) 1.22 kB
import { Range as CoreRange } from 'slate' import { Editor } from 'slate-react' export function getActiveMarks(editor: Editor) { return editor.value.document.getActiveMarksAtRange( getTrimmedSelectionRange(editor) ) } export function trimSelection(editor: Editor) { // Trim selection before applying transformation const selection = document.getSelection() if (selection) { let str = selection.toString() while (str.startsWith(' ')) { editor.moveStartForward(1) str = str.substring(1) } while (str.endsWith(' ')) { editor.moveEndBackward(1) str = str.substring(0, str.length - 1) } } } export function getTrimmedSelectionRange(editor: Editor) { // get trimmed selection, without changing editor (e.g. for checking active marks) const native = document.getSelection() let selection = editor.value.selection.toRange() if (native) { let str = native.toString() while (str.startsWith(' ')) { selection = selection.moveStartForward(1) str = str.substring(1) } while (str.endsWith(' ')) { selection = selection.moveEndBackward(1) str = str.substring(0, str.length - 1) } } return CoreRange.create(selection) }