UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

30 lines (29 loc) 1.07 kB
export const getCursorPosition = typeof document !== 'undefined' && document.caretPositionFromPoint ? (x, y) => { const range = document.caretPositionFromPoint(x, y); return range ? [range.offsetNode, range.offset] : null; } : (x, y) => { const range = document.caretRangeFromPoint(x, y); return range ? [range.startContainer, range.startOffset] : null; }; export const unit = (event) => event.metaKey ? 'vline' : event.altKey || event.ctrlKey ? 'word' : ''; /** * Save the current browser selection, so that it can be restored later. Returns * a callback to restore the selection. * * @returns Callback to restore the selection. */ export const saveSelection = () => { const selection = window?.getSelection(); if (!selection) return; const ranges = []; for (let i = 0; i < selection.rangeCount; i++) ranges.push(selection.getRangeAt(i)); return () => { selection.removeAllRanges(); for (const range of ranges) selection.addRange(range); }; };