(ranges, primIndex)
| 1010 | // build a selection out of it. 'Consumes' ranges array (modifying |
| 1011 | // it). |
| 1012 | function normalizeSelection(ranges, primIndex) { |
| 1013 | var prim = ranges[primIndex]; |
| 1014 | ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); |
| 1015 | primIndex = indexOf(ranges, prim); |
| 1016 | for (var i = 1; i < ranges.length; i++) { |
| 1017 | var cur = ranges[i], prev = ranges[i - 1]; |
| 1018 | if (cmp(prev.to(), cur.from()) >= 0) { |
| 1019 | var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); |
| 1020 | var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; |
| 1021 | if (i <= primIndex) --primIndex; |
| 1022 | ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); |
| 1023 | } |
| 1024 | } |
| 1025 | return new Selection(ranges, primIndex); |
| 1026 | } |
| 1027 | |
| 1028 | function simpleSelection(anchor, head) { |
| 1029 | return new Selection([new Range(anchor, head || anchor)], 0); |
no test coverage detected
searching dependent graphs…