PageSourceSearch

https://eac.ac/vendor/caret-master/jquery.caret.js

js eac.ac collected 2026-09-24 09:42:25 UTC 2,651 bytes, 83 lines download raw bytes

1(function($) {
2  $.fn.caret = function(pos) {
3    var target = this[0];
4    var isContentEditable = target && target.contentEditable === 'true';
5    if (arguments.length == 0) {
6      //get
7      if (target) {
8        //HTML5
9        if (window.getSelection) {
10          //contenteditable
11          if (isContentEditable) {
12            target.focus();
13            var range1 = window.getSelection().getRangeAt(0),
14                range2 = range1.cloneRange();
15            range2.selectNodeContents(target);
16            range2.setEnd(range1.endContainer, range1.endOffset);
17            return range2.toString().length;
18          }
19          //textarea
20          return target.selectionStart;
21        }
22        //IE<9
23        if (document.selection) {
24          target.focus();
25          //contenteditable
26          if (isContentEditable) {
27              var range1 = document.selection.createRange(),
28                  range2 = document.body.createTextRange();
29              range2.moveToElementText(target);
30              range2.setEndPoint('EndToEnd', range1);
31              return range2.text.length;
32          }
33          //textarea
34          var pos = 0,
35              range = target.createTextRange(),
36              range2 = document.selection.createRange().duplicate(),
37              bookmark = range2.getBookmark();
38          range.moveToBookmark(bookmark);
39          while (range.moveStart('character', -1) !== 0) pos++;
40          return pos;
41        }
42        // Addition for jsdom support
43        if (target.selectionStart)
44          return target.selectionStart;
45      }
46      //not supported
47      return;
48    }
49    //set
50    if (target) {
51      if (pos == -1)
52        pos = this[isContentEditable? 'text' : 'val']().length;
53      //HTML5
54      if (window.getSelection) {
55        //contenteditable
56        if (isContentEditable) {
57          target.focus();
58          window.getSelection().collapse(target.firstChild, pos);
59        }
60        //textarea
61        else
62          target.setSelectionRange(pos, pos);
63      }
64      //IE<9
65      else if (document.body.createTextRange) {
66        if (isContentEditable) {
67          var range = document.body.createTextRange();
68          range.moveToElementText(target);
69          range.moveStart('character', pos);
70          range.collapse(true);
71          range.select();
72        } else {
73          var range = target.createTextRange();
74          range.move('character', pos);
75          range.select();
76        }
77      }
78      if (!isContentEditable)
79        target.focus();
80    }
81    return this;
82  }
83})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.