@ckeditor/ckeditor5-utils
Version:
Miscellaneous utilities used by CKEditor 5.
34 lines (33 loc) • 1.01 kB
JavaScript
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @module utils/dom/getrangefrommouseevent
*/
/**
* Returns a DOM range from a given point specified by a mouse event.
*
* @param domEvent The mouse event.
* @returns The DOM range.
*/
export default function getRangeFromMouseEvent(domEvent) {
if (!domEvent.target) {
return null;
}
const domDoc = domEvent.target.ownerDocument;
const x = domEvent.clientX;
const y = domEvent.clientY;
let domRange = null;
// Webkit & Blink.
if (domDoc.caretRangeFromPoint && domDoc.caretRangeFromPoint(x, y)) {
domRange = domDoc.caretRangeFromPoint(x, y);
}
// FF.
else if (domEvent.rangeParent) {
domRange = domDoc.createRange();
domRange.setStart(domEvent.rangeParent, domEvent.rangeOffset);
domRange.collapse(true);
}
return domRange;
}