devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
67 lines (65 loc) • 1.99 kB
JavaScript
/**
* DevExtreme (cjs/__internal/ui/text_box/utils.caret.js)
* Version: 25.2.7
* Build date: Tue May 05 2026
*
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setCaret = exports.default = void 0;
var _devices = _interopRequireDefault(require("../../../core/devices"));
var _dom_adapter = _interopRequireDefault(require("../../../core/dom_adapter"));
var _renderer = _interopRequireDefault(require("../../../core/renderer"));
var _type = require("../../../core/utils/type");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const {
ios: ios,
mac: mac
} = _devices.default.real();
const isFocusingOnCaretChange = ios || mac;
const getCaret = input => {
let range = {
start: 0,
end: 0
};
try {
range = {
start: input.selectionStart ?? 0,
end: input.selectionEnd ?? 0
}
} catch (e) {
range = {
start: 0,
end: 0
}
}
return range
};
const setCaret = (input, selection) => {
try {
input.selectionStart = selection.start ?? null;
input.selectionEnd = selection.end ?? null
} catch {}
};
exports.setCaret = setCaret;
const caret = function(input, selection) {
let force = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
const inputElement = (0, _renderer.default)(input).get(0);
if (!(0, _type.isDefined)(selection)) {
return getCaret(inputElement)
}
if (!force && isFocusingOnCaretChange && _dom_adapter.default.getActiveElement(inputElement) !== inputElement) {
return
}
setCaret(inputElement, selection);
return
};
var _default = exports.default = caret;