@lyra/form-builder
Version:
Lyra form builder
42 lines (34 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createRange;
var _getWindow = require('get-window');
var _getWindow2 = _interopRequireDefault(_getWindow);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function createRange(event) {
const window = (0, _getWindow2.default)(event.target);
const x = event.x,
y = event.y;
// Resolve the point where the drag is now
let range;
// COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)
if (window.document.caretRangeFromPoint) {
range = window.document.caretRangeFromPoint(x, y);
} else {
range = window.document.createRange();
range.setStart(event.rangeParent, event.rangeOffset);
}
if (!range || range.isCollapsed) {
return null;
}
const rangeOffset = range.startOffset;
const rangeLength = range.startContainer.wholeText ? range.startContainer.wholeText.length : 0;
const rangeIsAtStart = rangeOffset < rangeLength / 2;
range.detach();
return {
rangeOffset: rangeOffset,
rangeLength: rangeLength,
rangeIsAtStart: rangeIsAtStart
};
}