(ranges, primIndex)
| 995 | // build a selection out of it. 'Consumes' ranges array (modifying |
| 996 | // it). |
| 997 | function normalizeSelection(ranges, primIndex) { |
| 998 | var prim = ranges[primIndex]; |
| 999 | ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); |
| 1000 | primIndex = indexOf(ranges, prim); |
| 1001 | for (var i = 1; i < ranges.length; i++) { |
| 1002 | var cur = ranges[i], prev = ranges[i - 1]; |
| 1003 | if (cmp(prev.to(), cur.from()) >= 0) { |
| 1004 | var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); |
| 1005 | var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; |
| 1006 | if (i <= primIndex) --primIndex; |
| 1007 | ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); |
| 1008 | } |
| 1009 | } |
| 1010 | return new Selection(ranges, primIndex); |
| 1011 | } |
| 1012 | |
| 1013 | function simpleSelection(anchor, head) { |
| 1014 | return new Selection([new Range(anchor, head || anchor)], 0); |
no test coverage detected