utils.caret.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /**
  2. * DevExtreme (ui/text_box/utils.caret.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var _renderer = require("../../core/renderer");
  11. var _renderer2 = _interopRequireDefault(_renderer);
  12. var _type = require("../../core/utils/type");
  13. var _browser = require("../../core/utils/browser");
  14. var _browser2 = _interopRequireDefault(_browser);
  15. var _devices = require("../../core/devices");
  16. var _devices2 = _interopRequireDefault(_devices);
  17. var _dom_adapter = require("../../core/dom_adapter");
  18. var _dom_adapter2 = _interopRequireDefault(_dom_adapter);
  19. function _interopRequireDefault(obj) {
  20. return obj && obj.__esModule ? obj : {
  21. "default": obj
  22. }
  23. }
  24. var _devices$real = _devices2.default.real(),
  25. ios = _devices$real.ios,
  26. mac = _devices$real.mac;
  27. var isFocusingOnCaretChange = _browser2.default.msie || ios || mac;
  28. var getCaret = function(input) {
  29. var range;
  30. try {
  31. range = {
  32. start: input.selectionStart,
  33. end: input.selectionEnd
  34. }
  35. } catch (e) {
  36. range = {
  37. start: 0,
  38. end: 0
  39. }
  40. }
  41. return range
  42. };
  43. var setCaret = function(input, position) {
  44. if (!_dom_adapter2.default.getBody().contains(input)) {
  45. return
  46. }
  47. try {
  48. input.selectionStart = position.start;
  49. input.selectionEnd = position.end
  50. } catch (e) {}
  51. };
  52. var caret = function(input, position) {
  53. input = (0, _renderer2.default)(input).get(0);
  54. if (!(0, _type.isDefined)(position)) {
  55. return getCaret(input)
  56. }
  57. if (isFocusingOnCaretChange && _dom_adapter2.default.getActiveElement() !== input) {
  58. return
  59. }
  60. setCaret(input, position)
  61. };
  62. module.exports = caret;