json-joy
Version:
Collection of libraries for building collaborative editing apps.
20 lines (19 loc) • 559 B
JavaScript
/**
* 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);
};
};